在我的 index.cshtml 中,模型是一个 Person 列表。我想在页面上显示这些人。但是,在同一页面上,我想显示一个允许通过 ajax 创建新 Person 的对话框。
在对话框内的编辑器模板中重新创建标记似乎违反了 DRY。
一个可能的解决方案可能是:
- 创建一个以人为模型的部分
- 调用@Html.EditorForModel
- 从 index.cshtml 调用 @Html.RenderPartial("_partial", new Person())
但这似乎是不必要的间接混淆了代码。
在这种情况下是否有要使用的模式或最佳实践?
人物模型
public class Person
{
public string Name{ get; set; }
public string Email { get; set; }
}
人的编辑器模板
@model Person
<div class="form-group">
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
</div>
<div class="form-group">
@Html.LabelFor(model => model.Email)
@Html.EditorFor(model => model.Email)
</div>
索引.cshtml
@model Person[]
<ul>
@foreach (var person in Model)
{
<li>@person.Name</li>
}
</ul>
<div class="modal" id="new">
<div class="modal-dialog">
<div class="modal-content">
@using (Ajax.BeginForm("create", "contacts", new AjaxOptions() { }))
{
<div class="modal-header">
Create person
</div>
<div class="modal-body">
<--- use editor template ? <---
@Html.AntiForgeryToken()
</div>
<div class="modal-footer">
<button type="submit" class="btn">Ok</button>
</div>
}
</div>
</div>
</div>