2 回答

TA貢獻2012條經驗 獲得超12個贊
除非我弄錯了,否則我相信問題就出在 lambda 函數上:
代替
@Html.DisplayFor(modelItem => item.IdTamanhoNavigation) ^^^
您需要引用正確的輸入參數(modelItem):
@Html.DisplayFor(modelItem => modelItem.IdTamanhoNavigation) ^^^

TA貢獻1830條經驗 獲得超9個贊
我忘了說我一直在使用 JSon 將該列表序列化為會話。但我必須在 Produto Model 類的那些相關方法上使用 [JsonIgnore],如果沒有,當包含這些相關表值時,我會從 Newtonsoft.Jason 收到錯誤。
正如你在下面看到的
在 ShoppingCart 控制器類上
public ActionResult AddToCart(IFormCollection collection)
{
...
var produtoContext = _context.Produto
.Include(c => c.IdCategoriaNavigation)
^^^^
.Include(c => c.IdTamanhoNavigation)
^^^^
.Include(c => c.IdTipoMassaNavigation)
^^^^
.FirstOrDefault(p => p.Nome == Nome && p.IdTamanho == IdTamanho
&& p.IdTipoMassa == IdTipoMassa);
...
The produtoContex here, normally has all the values from the related tables.
{PianoPizza.Models.Categoria}
{PianoPizza.Models.Tamanho}
{PianoPizza.Models.TipoMassa}
But when I set the List on Session I got the Json error.
HttpContext.Session.Set("itens", itens);
^^^^
...
}
JsonSerializationException:檢測到類型為“Pianino.Models.Produto”的自引用循環。路徑“[0].IdCategoriaNavigation.Produto”。Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CheckForCircularReference(JsonWriter writer、對象值、JsonProperty 屬性、JsonContract 合約、JsonContainerContract 容器合約、JsonProperty 容器屬性)
即使評論第一個包括,我對 IdTamanhoNavigation 和 IdTipoMassaNavigation 也有相同的看法。
因此,使用如下所示的 [JsonIgnore],我修復了該錯誤。另一方面,當我從 ShoppingCart Controller 類上的會話獲取列表時,這些值變為 null。
關于產品型號類
[JsonIgnore]
public virtual Categoria IdCategoriaNavigation { get; set; }
[JsonIgnore]
public virtual Tamanho IdTamanhoNavigation { get; set; }
[JsonIgnore]
public virtual TipoMassa IdTipoMassaNavigation { get; set; }
在實用程序類上
public static class SessionExtensions
{
public static void Set<T>(this ISession session, string key, T value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T Get<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) :
JsonConvert.DeserializeObject<T>(value);
}
}
- 2 回答
- 0 關注
- 143 瀏覽
添加回答
舉報