2012-02-02 33 views
1

如果我有導航屬性呢?我正在試圖編輯的模型中有另一個模型的集合。我想顯示集合屬性中每個對象的複選框列表。到目前爲止,這是我試圖...ASP.NET MVC @ Html.EditorFor(model => model.property)但

@{ 

      foreach (var category in ViewBag.Categories) 
      { 
       if (Model.Categories.Contains(category)) 
       { 
        <input type="checkbox" name="selected-categories" value="category.CategoryId" checked="checked" />@category.Name 
       } 
       else 
       { 
        <input type="checkbox" name="selected-categories" value="@category.CategoryId" />@category.Name 
       } 
      } 
     } 

但它失敗,帶有EntityCommandExecutionException。在我的if語句中,如何訪問模型。像我在@Html.EditorFor(model => model.Id)之類的類似的類?

回答

0

使用強類型視圖是我的方式。創建一個包含您的模型的ViewModel,並將此ViewModel用於強類型的View。

域模型和視圖模型(簡化的)

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

public class YourViewModel 
{ 
    public List<string> PossibleCategories { get ; set ; } 
    public YourModel YourData { get ; set ; } 
} 

然後在視圖:

@model YourViewModel 


@{ 
    foreach (string CurrCategory in Model.PossibleCategories) 
    { 
     if (Model.YourData.Category == CurrCategory) 
     { 
      @Html.CheckBox(CurrCategory, new { @checked = "checked" }) 
      @Html.Encode(CurrCategory) <br /> 
     } 
     else 
     { 
      @Html.CheckBox(CurrCategory, false) 
      @Html.Encode(CurrCategory) <br /> 
     } 
    } 
} 
+0

您好,感謝的響應。我最終做了一個for循環,而它似乎正在工作。儘管如此,再次感謝您的幫助。 – 2012-02-02 04:24:10

+0

@ user1066133爲什麼在一個實現了'IEnumerable'的對象上使用簡單的'for'循環? – 2012-02-02 17:09:48

+0

我最近剛把它改回了foreach。它之前被廢棄的原因是因爲我設置了ViewBag.Categories = db.Categories;在控制器中,而不是db.Categories.ToList(); – 2012-02-02 23:26:05

相關問題