У меня есть веб-проект MVC 5.2.3.Почему Html.EditorFor()/Html.HiddenFor() неправильно отображает поле идентификатора?
У меня есть модель:
public class InstanceOnboarding : IInstanceOnboarding
{
public int ID { get; set; }
public int InstanceID { get; set; }
public string InstanceName { get; set; }
//etc...
}
И я отображая модель с Html.EditorFor так:
@Html.EditorFor(model => model, "InstanceOnboarding")
В Views/Shared/EditorTemplates У меня есть файл InstanceOnboarding.cshtml что определяет, как должен отображаться файл EditorFor():
@model Models.InstanceOnboarding
@Html.HiddenFor(model => model.ID)
@Html.HiddenFor(model => model.InstanceID)
@Html.HiddenFor(model => model.AuditFileID)
//etc...
Однако, если страница l ПССП и я осмотреть элемент в Chrome, я вижу это:
<input ... id="ID" name="ID" type="hidden" value="240">
<input ... id="InstanceID" name="InstanceID" type="hidden" value="240">
, даже если 240 является значением InstanceID
, и 0, это значение ID
. Я знаю, что это потому, что я вижу их в viewModel прямо перед загрузкой страницы. Без разницы!
Любая идея, как это происходит?
EDIT: Я экспериментировал с установкой идентификатора не равным 0; это не имеет значения.
EDIT 2: Показано метод контроллера по запросу: (. Черные участки отредактированной информации)
Вам нужно показать свой метод GET (я предполагаю, что у вас есть параметр с именем 'id', и тогда вы устанавливаете значение« InstanceID »на значение этого параметра) –
Как примечание стороны, это должно быть' @ Html.EditorFor (model => model) 'и ваш' InstanceOnboarding.cshtml' EditorTemplate должен быть расположен в папке '/ Views/Shared/EditorTemplates' (или'/Views/YourControllerName/EditorTemplates' –