Когда я использую помощник Html.EditorFor в своей форме, я хочу иметь возможность настраивать внешний вид тега, поэтому я определил EditorTemplate, чтобы иметь возможность делать именно это. Вот так, на мой взгляд, выглядит моя форма:
@model Models.SimpleUserClass
@{
ViewBag.Title = "Create User";
}
<div class="row">
<div class="col-lg-6" id="FromPlaceHoler">
@using (Html.BeginForm("CreateUser", "Users"))
{
<fieldset>
<legend>Create One Way Trip</legend>
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.UserSurname)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserSurname)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.UserAge)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserAge)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.UserGender)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserGender)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
</div>
</div>
Такие свойства, как UserName и Surname, относятся к типу String, поэтому в моей общей папке я создал папку EditorTemplates и создал файл String.cshtml, чтобы определить способ, которым должен выглядеть редактор для String. При запуске теста формы кажется, что она работает хорошо, поскольку создаваемые поля ввода имеют вид, который я указал - проблема в том, что когда я отправляю форму с использованием этих настраиваемых полей ввода, mvc не может сопоставить поля моей формы с моей моделью. Причиной этого являются свойства, необходимые тегу для поддержки этой привязки к моделям. Вот пример:
Вот мой код в String.cshtml EditorTemplate:
<input type="text" class="form-control">
а при использовании EditorFor по умолчанию без настройки он генерирует следующую разметку:
<input data-val="true" data-val-required="The User Name field is required." id="UserName" name="UserName" type="text" value="" />
Как мы видим выше, в моем коде нет свойств id и name, которые коррелируют с именем моих свойств в моем классе и используются для привязки значений к моему классу. Итак, как мне изменить код в String.cshtml, чтобы включить эти свойства и динамически установить их значения? поскольку его следует использовать для различных свойств в моем классе?