Чтобы воссоздать проблему, возникшую у меня, я установил два простых действия с контроллером, два представления и модель представления:
Действие MultiForms (в классе контроллера формы)
public class FormController : Controller
{
[HttpGet]
public ActionResult MultiForms()
{
return View("MultiForms");
}
// ...
MultiForms.cshtml - вид бритвы
@Html.Action("MyFormGet", "Form")
Обратите внимание, что в методе действий я вызываю метод контроллера, который возвращает частичный вид формы.
Действие MyFormGet
[HttpGet]
public PartialViewResult MyFormGet()
{
var viewModel = new MyFormViewModel();
ViewData.TemplateInfo.HtmlFieldPrefix = Guid.NewGuid().ToString().Replace("-", "_");
return PartialView("MyForm", viewModel);
}
Показать модель
public class MyFormViewModel
{
public string TextInput1 { get; set; }
}
MyForm.cshtml - просмотр Razor
@model Mvc5App.Controllers.MyFormViewModel
@using (Html.BeginForm("MyFormPost", "Form", FormMethod.Post))
{
<br />
@Html.TextBoxFor(m => m.TextInput1)
}
Когда я укажу свой браузер на /Form/MultiForms
, я получаю ожидаемый результат:
<input type="text" value="" name="e166fa0d_46fe_40d4_a970_73c52a35f224.TextInput1" id="e166fa0d_46fe_40d4_a970_73c52a35f224_TextInput1">
Затем я обновляю страницу, и результат становится следующим:
<input type="text" value="" name="48edc339_69ad_4b9b_9583_198038beab45.TextInput1">
Откуда появился атрибут id? Это ошибка в ASPNET MVC5 или я сделал что-то не так с этой настройкой?