私は、このような他の複雑なオブジェクトの配列である多くのプロパティを持つオブジェクトを持っています
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
if は型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>
この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
array of obj2
しかし、型のモデルにある配列フィールドはまだobj1
ですnull
私は何を間違っていますか?