0

我有课程:

public class PersonDetailsModel
{
    public string FistName
    {
        get;
        set;
    }

    public string LastName
    {
        get;
        set;
    }

    public string Email
    {
        get;
        set;
    }
}

public class RegisterCoupleModel
{
    public PersonDetailsModel Groom
    {
        get;
        set;
    }

    public PersonDetailsModel Bride
    {
        get;
        set;
    }


    public string UrlKeyword
    {
        get;
        set;
    }

    public string ReCaptcha
    {
        get;
        set;
    }
}

文件夹 Shared > EditorTemplates

PersonDetailsModel.cshtml

@model BindSolution.AndMarried.ViewModel.PersonDetailsModel

<div class="editor-label">
    @Html.LabelFor(m => m.FistName)
</div>
<div class="editor-field">     
    @Html.EditorFor(m => m.FistName)
    @Html.ValidationMessageFor(m => m.FistName)
</div>

<div class="editor-label">
    @Html.LabelFor(m => m.LastName)
</div>
<div class="editor-field">     
    @Html.EditorFor(m => m.LastName)
    @Html.ValidationMessageFor(m => m.LastName)
</div>

<div class="editor-label">
    @Html.LabelFor(m => m.Email)
</div>
<div class="editor-field">     
    @Html.EditorFor(m => m.Email)
    @Html.ValidationMessageFor(m => m.Email)
</div>

在我看来:

@Html.EditorForModel()

只显示UrlKeywordReCapcha字段!

为什么 Asp.net MVC 不使用共享文件夹中的模板来显示我的嵌套类型PersonDetailsModel

4

1 回答 1

1

你知道,你可以编辑你的另一个问题。:)

无论如何,我认为这行不通。您要么需要自己控制整个模板,要么让 MVC 自己完成。(我可能是错的)

创建一个编辑器模板RegisterCoupleModel

@model BindSolution.AndMarried.ViewModel.RegisterCoupleModel

@Html.EditorFor(model => model.Groom)
@Html.EditorFor(model => model.Bride)
@Html.EditorFor(model => model.UrlKeyword)
@Html.EditorFor(model => model.ReCapcha)

或者,您可以在 ViewModel 中的和[UIHint("PersonDetailsModel"]属性上使用属性。GroomBride

阅读EditorForModel中的备注部分,了解这一切是如何工作的。

于 2011-09-30T01:44:14.317 回答