2

NULL我會讓代碼做了這裏說,我有這樣的事情:MVC 3的IList <T>模型屬性上POST

class Problem 
{ 
    public string Title { get; set; } 
    public string Description { get; set; } 
    public virtual IList<Symptom> Symptoms { get; set; } 
} 

class Symptom 
{ 
    public string Comments { get; set; } 
    public virtual Category Category { get; set; } 
} 

class Category 
{ 
    public string Name { get; set; } 
} 

我有一個模式,它允許用戶在增加的症狀的列表我的看法。添加每種症狀產生如下所示的INPUT(其中N是索引):

<input type="text" name="Symptom[N].Name" value="@Model.Symptom[N].Name"> 
<input type="text" name="Symptom[N].Category" value="@Model.Symptom[N].Category"> 

一旦我POST數據到我的控制器,所述模型包含症狀的一個有效列表(如果我添加3 ,我的Product.Symptom列表有3個實體),並且每個症狀的[Comments]都持續存在,但每個的[Category]屬性都是NULL。我在這裏做錯了什麼?我嘗試了很多東西,但我仍然以NULL作爲[Category]。

我正在使用實體框架4.1代碼優先與Fluent API在MVC 3中使用Razor語法開發。

+0

你的動作方法是什麼樣子? – hunter 2011-12-15 16:52:22

+0

通常情況下:if(!ModelState.IsValid){return View(model)}否則添加到存儲庫並重定向。添加的症狀在發回(如果發生驗證錯誤)時會持續存在(包括類別名稱),這非常奇怪! – 2011-12-15 16:54:33

回答

2

試試這個:

<input type="text" 
    name="Symptom[N].Category.Name" 
    value="@Model.Symptom[N].Category.Name"> 

我認爲正在發生的事情是,它試圖綁定一個stringCategory這是無效的。如果要將文本映射到Category類中的Name屬性,則需要將其指定爲更深一級。