Jac*_*ues 33 asp.net-mvc razor
我试图用MVC4 Razor找到我的脚,我坚持这个简单的问题.
当我使用@ Html.DisplayFor时,模型总是以NULL形式返回,但是当我使用@ Html.TextBoxFor这个模型完全填充时,我缺少什么?
提前致谢
Tra*_*s J 61
这是许多人在asp.net mvc框架中遗漏的常见问题.不只是在助手等方面的差异HiddenFor,DisplayFor,TextBoxFor但框架究竟如何设置自动收集和验证这些输入- .魔术都是用HTML5的data-*属性完成的.看着输入标签产生的,有要在形式一些额外的属性时,你会发现data-val,data-val-required和也许对于某些类型的附加数据的属性,例如NUMERICS会data-val-number.
这些数据属性允许jQuery扩展jquery.validate.unobtrusive.js解析DOM,然后决定要验证哪些字段或生成错误消息.
已发布数据的实际收集将从该name属性中反映出来.这应该映射到c#或vb [HttpPost]方法中的模型.
HiddenFor当您想要提供用户不需要注意的发布数据时使用.
使用DisplayFor时要显示的记录,但不允许他们被editted.
使用TextBoxFor时,要允许用户输入或允许用户编辑的字段.
编辑
"the purpose of this view is to enable the user to view the data before submitting it to the database. Any ideas how I can achieve this?"
你可以用HiddenFor和二人组完成这个DisplayFor.用于HiddenFor准备发布值,并DisplayFor显示这些值.
Shy*_*yju 16
DisplayFor不会做模型绑定.TextBoxFor会这样做,因为它input在表单中创建一个元素,表单可以在发布时处理它.如果你想在HttpPost动作中获得一些数据并且你不想使用TextBoxFor,你可以使用HiddenFor像这样的HTML帮助方法将该pirticulare模型proeprty保存在表单内的隐藏变量中.
@using(Html.BeginForm())
{
<p>The Type Name is</p> @Html.DisplayFor(x=>x.TypeName)
@Html.HiddenFor(x=>x.TypeName)
<input type="submit" value="Save" />
}
Run Code Online (Sandbox Code Playgroud)
小智 6
使用DisplayFor和HiddenFor.DisplayFor只显示文本而不是输入字段,因此不会回发. HiddenFor实际创造<input type="hidden" value="xxxx"/>
| 归档时间: |
|
| 查看次数: |
32505 次 |
| 最近记录: |