MVC4中辅助器方法@Html.HiddenFor()值来源的有关问题
MVC4中辅助器方法@Html.HiddenFor()值来源的问题
今天学习MVC4辅助器方法遇到一个问题,百思不得其解,请教一下大家。
1.建立一个TestType模型类,有一个Id属性。
2.建立一个动作方法
3.建立一个对应的强类型视图,使用Razor引擎,并利用HiddenFor方法生成Id的隐藏字段
4.以 http:.../Question/Edit/12 访问控制器,跳转到视图。此时传给视图的视图模型对象是一个空引用,应该没有属性值。但是生成的页面中,Id隐藏字段有值,value=12:
请问这个value=12是从哪里来的呢?是怎样一个机制得到的?
特别说明:路由为默认路由,路由模式为"{controller}/{action}/{id}"。经过我实验和推测,怀疑是从提取出的路由片段值得到的,但具体是什么机制并不清楚。
麻烦大家帮忙解答一下。
------解决思路----------------------
试完了,是这样的。
看看这篇文章,感觉是相关的
http://www.hanselman.com/blog/TheWeeklySourceCode38ASPNETMVCBetaObscurityModelStateIsValidIsFalseBecauseModelBinderPullsValuesFromRouteData.aspx
我试了下,可以用下面的代码达到你的目的
[HttpGet]
public ActionResult Edit(int id)
{
ModelState.Remove("id");
TestType model = new TestType()
{
id = id * 10,
id1 = id * 10,
title = "abc"
};
return View(model);
}
这个方案来自:
http://stackoverflow.com/questions/15282577/why-is-my-textboxfor-using-my-route-data
今天学习MVC4辅助器方法遇到一个问题,百思不得其解,请教一下大家。
1.建立一个TestType模型类,有一个Id属性。
2.建立一个动作方法
public ActionResult Edit(int id)
{
TestType model = null;
return View(model);
}
3.建立一个对应的强类型视图,使用Razor引擎,并利用HiddenFor方法生成Id的隐藏字段
@model TestType
......
<body>
@using (Html.BeginForm("Edit", "Question", FormMethod.Post))
{
<div>
@Html.HiddenFor(m => m.Id)
<div>
}
.......
4.以 http:.../Question/Edit/12 访问控制器,跳转到视图。此时传给视图的视图模型对象是一个空引用,应该没有属性值。但是生成的页面中,Id隐藏字段有值,value=12:
<input data-val="true" data-val-number="字段 主键 必须是一个数字。" data-val-required="主键 字段是必需的。" id="Id" name="Id" type="hidden" value="12" />
请问这个value=12是从哪里来的呢?是怎样一个机制得到的?
特别说明:路由为默认路由,路由模式为"{controller}/{action}/{id}"。经过我实验和推测,怀疑是从提取出的路由片段值得到的,但具体是什么机制并不清楚。
麻烦大家帮忙解答一下。
------解决思路----------------------
试完了,是这样的。
看看这篇文章,感觉是相关的
http://www.hanselman.com/blog/TheWeeklySourceCode38ASPNETMVCBetaObscurityModelStateIsValidIsFalseBecauseModelBinderPullsValuesFromRouteData.aspx
我试了下,可以用下面的代码达到你的目的
[HttpGet]
public ActionResult Edit(int id)
{
ModelState.Remove("id");
TestType model = new TestType()
{
id = id * 10,
id1 = id * 10,
title = "abc"
};
return View(model);
}
这个方案来自:
http://stackoverflow.com/questions/15282577/why-is-my-textboxfor-using-my-route-data