私のモデルにはバージョン型のプロパティが含まれています。
public class Model
{
public Version AppVersion { get; set; }
}
ビューで @Html.Editor を使用します。
@using (@Html.BeginForm()) {
<div class="editor-field">
@Html.EditorFor(model=>@model.AppVersion)
</div>
}
次の HTML マークアップが生成されます。
<div class="editor-field">
<div class="editor-label"><label for="AppVersion_Major">Major</label></div>
<div class="editor-field"><input class="text-box single-line" data-val="true" data-val-number="Значением поля Major должно быть число." data-val-required="Требуется поле Major." id="AppVersion_Major" name="AppVersion.Major" type="number" value="" /> <span class="field-validation-valid" data-valmsg-for="AppVersion.Major" data-valmsg-replace="true"></span></div>
<div class="editor-label"><label for="AppVersion_Minor">Minor</label></div>
<div class="editor-field"><input class="text-box single-line" data-val="true" data-val-number="Значением поля Minor должно быть число." data-val-required="Требуется поле Minor." id="AppVersion_Minor" name="AppVersion.Minor" type="number" value="" /> <span class="field-validation-valid" data-valmsg-for="AppVersion.Minor" data-valmsg-replace="true"></span></div>
<div class="editor-label"><label for="AppVersion_Build">Build</label></div>
<div class="editor-field"><input class="text-box single-line" data-val="true" data-val-number="Значением поля Build должно быть число." data-val-required="Требуется поле Build." id="AppVersion_Build" name="AppVersion.Build" type="number" value="" /> <span class="field-validation-valid" data-valmsg-for="AppVersion.Build" data-valmsg-replace="true"></span></div>
<div class="editor-label"><label for="AppVersion_Revision">Revision</label></div>
<div class="editor-field"><input class="text-box single-line" data-val="true" data-val-number="Значением поля Revision должно быть число." data-val-required="Требуется поле Revision." id="AppVersion_Revision" name="AppVersion.Revision" type="number" value="" /> <span class="field-validation-valid" data-valmsg-for="AppVersion.Revision" data-valmsg-replace="true"></span></div>
<div class="editor-label"><label for="AppVersion_MajorRevision">MajorRevision</label></div>
<div class="editor-field"><input class="text-box single-line" data-val="true" data-val-number="Значением поля MajorRevision должно быть число." data-val-required="Требуется поле MajorRevision." id="AppVersion_MajorRevision" name="AppVersion.MajorRevision" type="text" value="" /> <span class="field-validation-valid" data-valmsg-for="AppVersion.MajorRevision" data-valmsg-replace="true"></span></div>
<div class="editor-label"><label for="AppVersion_MinorRevision">MinorRevision</label></div>
<div class="editor-field"><input class="text-box single-line" data-val="true" data-val-number="Значением поля MinorRevision должно быть число." data-val-required="Требуется поле MinorRevision." id="AppVersion_MinorRevision" name="AppVersion.MinorRevision" type="text" value="" /> <span class="field-validation-valid" data-valmsg-for="AppVersion.MinorRevision" data-valmsg-replace="true"></span></div>
しかし、コントローラーには常に AppVersion={0.0} があります。
[HttpPost]
public ActionResult Add(Model model)
{
if (ModelState.IsValid)
{
Version ver = model.AppVersion;
}
}