-1
結合館藏模型我有很多特性的對象,其中之一是一些其他的複雜對象的數組
像這樣Asp.Net MVC 3不上張貼
class obj1
{
public string prop1 {get; set;}
public string prop2 {get; set;}
public obj2[] array {get; set;}
}
class obj2
{
SomeEnum Type{get; set;}
string Content{get; set;}
}
我已經創建了一個編輯器模板OBJ2的陣列可以命名爲obj2ArrayTemplate
是這樣
@for (int i = 0; i < Model.Length; i++)
{
@Html.EditorFor(model=>model[i],"obj2Template")
}
和obj2的編輯模板,可以將它命名爲obj2Template
是這樣
<div class="editor-label">
@Html.DisplayFor(model=>model.Type,"SomeEnum",ViewData)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Content)
@Html.ValidationMessageFor(model => model.Content)
</div>
現在因爲財產Type
如果SomeEnum
型這是一種enum
,因此不能由Asp.Net MVC
我已經創建了一個模板,這也
直接呈現的這是這樣的
<input type="text" value="@Model.ToString()" id="@ViewData.TemplateInfo.HtmlFieldPrefix" name="@ViewData.TemplateInfo.HtmlFieldPrefix"/>
視圖被正確渲染,並將合併的呈現的視圖的HTML是
<div class="editor-field">
<input class="text-box single-line" id="array__0__Content" name="array.[0].Content" type="text" value="FBID" />
</div>
<div class="editor-label">
<input type="text" value="Blog" id="array.[1].Type" name="array.[1].Type"/>
</div>
<div class="editor-field">
<input class="text-box single-line" id="array__1__Content" name="array.[1].Content" type="text" value="SOme random blog" />
</div>
<div class="editor-label">
<input type="text" value="Twitter" id="array.[2].Type" name="array.[2].Type"/>
</div>
<div class="editor-field">
<input class="text-box single-line" id="array__2__Content" name="array.[2].Content" type="text" value="Twitter Profile" />
</div>
當IAM回發包含該HTML
鉻的形式示出了我這個發佈數據
prop1:val1
prop2:val2
array.[0].Type:Facebook
array.[0].Content:FBID
array.[1].Type:Blog
array.[1].Content:SOme random blog
array.[2].Type:Twitter
array.[2].Content:Twitter Profile
但仍陣列字段,它是在obj1
類型的模型中的array of obj2
是null
我做錯了什麼?
這是一個完全不必要的破解。通過在'for'循環中使用'EditorFor()'來告訴幫助者添加額外的點。將'EditorTemplate'重命名爲'obj2.cshtml'(即類的名稱),並在主視圖中將其'EditorFor(m => m.array)' - 控件正確命名。 –