要重新创建问题,我已经设置了两个简单的控制器操作,两个视图和一个视图模型:
MultiForms Action(在表单控制器类中)
public class FormController : Controller
{
[HttpGet]
public ActionResult MultiForms()
{
return View("MultiForms");
}
// ...
MultiForms.cshtml - Razor View
@Html.Action("MyFormGet", "Form")
注意在action方法中,我调用了返回表单局部视图的控制器方法。
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 View
@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中的错误还是我在这个设置上做错了什么?
答案 0 :(得分:1)
感谢@ demo我觉得我知道id没出现的时候......
如果id以数字(或下划线)开头,则不会呈现。所以这个GUID将呈现:
f3b1a447_3786_4472_9dfe_14c3ae8aae24
但是这个不会:
1c26ce3d_5c71_408a_aae2_7be414f1d383
上面的解决方案似乎是这样的前缀:
FOO_1c26ce3d_5c71_408a_aae2_7be414f1d383
问题就消失了。