ASP.NET MVC использует шаблон редактора для создания объектов - PullRequest
0 голосов
/ 22 мая 2018

В моем 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>
...