В моем index.cshtml модель представляет собой список Person.Я хочу отобразить этих людей на странице.Однако на той же странице я хочу показать диалоговое окно, позволяющее создавать нового персонажа с помощью ajax.
Кажется, что нарушение DRY создает воссоздание разметки в шаблоне редактора внутри диалога.
Возможным решением может быть:
- Создание частичного с Person в качестве модели
- Call @ Html.EditorForModel
- Call @ Html.RenderPartial ("_partial ", new Person ()) из index.cshtml
Но это похоже на ненужную косвенность, которая запутывает код.
Есть ли шаблон или лучшая практика для использования в этом сценарии?
Модель для человека
public class Person
{
public string Name{ get; set; }
public string Email { get; set; }
}
EditorTemplate для человека
@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>
Index.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>