我有课程:
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;
}
}
文件夹共享> 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()
仅显示UrlKeyword
和ReCapcha
字段!
为什么Asp.net MVC不在共享文件夹中使用templantes来显示我的嵌套类型PersonDetailsModel
?
答案 0 :(得分: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"]
和Groom
媒体资源上使用Bride
属性。
阅读 EditorForModel 中的备注部分,了解这一切是如何运作的。