-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)' - 控件正确命名。 –