我正在處理我的第一個ASP.NET MVC 3應用程序,並試圖在創建頁面上顯示特定冰淇淋的成分。Html.EditorFor顯示正確的項目數量,但不顯示數據
我已經有了一個具有結構像這樣的頁面視圖模型:
public class IceCreamViewModel
{
...
public IEnumerable<IngredientViewModel> Ingredients { get; set; }
}
(還有其他的屬性,但它們不是密切相關的討論)
Ingredients
被控制器上的Create
動作填充,我已驗證它包含我想要的數據。
的IngredientViewModel
具有以下結構:
public class IngredientViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsChecked { get; set; }
}
在創建視圖我試圖顯示成分的集合,以允許用戶檢查其是在配方(例如,花生,雞蛋等)和我做這樣的事情:
@Html.EditorFor(m => m.Ingredients)
我寫和編輯模板,這看起來像這樣:
@model IceCream.ViewModels.Ingredients.IngredientViewModel
<div>
@Html.HiddenFor(m => m.Id)
@Html.LabelFor(m => m.Name)
@Html.CheckBoxFor(m => m.IsChecked)
</div>
我期望顯示的是每種成分的一大堆標籤和複選框,但顯示的是正確數量的標籤/複選框條目,但它們都會說「名稱」而不是成分名稱在IngredientViewModel中。所以我肯定在這裏做錯了事。它顯然知道它有N個要迭代的項目,但它沒有拾取這些項目的屬性。指導?
更新
因此,所有我落得這樣做交換我LabelFor
到TextBoxFor
和我的價值觀出現了......他們當然會。 (累,漫長的一天) - @LabelFor
使用財產的名稱,或註釋DisplayName
爲財產。事情現在正常工作...沿着,沒有看到這裏...
我沒有用'@m任何運氣。名稱「,但是你寫的東西用@TextBoxFor'慢跑了我的大腦 - 謝謝! – itsmatt
@itsmatt:沒問題。有趣的是:我實際上首先想到了這一點,並以這種方式迴應,但是當我再次閱讀這個問題時,我以爲你真的想要標籤而不是文本框,所以我改變了我的答案。 – StriplingWarrior