C# 模型绑定失败,版本为

C# 模型绑定失败,版本为,c#,asp.net-mvc-4,model-binding,C#,Asp.net Mvc 4,Model Binding,我的模型包含版本类型属性 public class Model { public Version AppVersion { get; set; } } 我在视图中使用@Html.Editor @using (@Html.BeginForm()) { <div class="editor-field"> @Html.EditorFor(model=>@model.AppVersion) </div> } 默认模型绑定器无法绑

我的模型包含版本类型属性

public class Model
{
    public Version AppVersion { get; set; }
}
我在视图中使用@Html.Editor

@using (@Html.BeginForm()) {
    <div class="editor-field">
        @Html.EditorFor(model=>@model.AppVersion)
    </div>
}

默认模型绑定器无法绑定版本,因为它使用默认构造函数,并且版本调用没有其属性的setter。您需要为此编写自定义模型活页夹。
<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>
[HttpPost]
public ActionResult Add(Model model)
{
    if (ModelState.IsValid)
    {
        Version ver = model.AppVersion;
    }
}