禁用HTML.TextBoxFor()

时间:2012-01-24 22:41:06

标签: asp.net-mvc asp.net-mvc-3

  

Html.TextBoxFor(m => m.Student.FirstName,new {id =“FirstName”,disabled =“disabled”})

我想禁用文本框,所以我使用了如上所述的禁用attr并且它可以工作但是在保存表单时,上面文本框中加载的值变为null。

任何机构都知道发生了什么

谢谢

3 个答案:

答案 0 :(得分:8)

这是设计的。禁用的输入不会POST回服务器。

您可以使用'readonly'使输入'只读'。这将使数据回发,但用户无法以传统方式编辑信息。

<input type="text" name="foo" value="Some Value" readonly="readonly" />

请记住,人们可以使用像Firebug或Dragonfly这样的工具来编辑数据并将其发回。因此,请保持警惕并确保数据相同或更好,只需使用已禁用的属性。

答案 1 :(得分:3)

您可以在@ Html.TextBoxFor

中尝试此操作
Html.TextBoxFor(m => m.Student.FirstName, new { id = "FirstName", ,@readonly="readonly" })

答案 2 :(得分:1)

HTML规范说禁用的输入不会POST它们的值。如果你想在客户端坚持它,你需要创建一个隐藏的输入来伴随这个值。

然而,这可能不是你想要的。如果您已禁用文本框,则可能不希望用户能够更改此值,但没有任何事情阻止他们使用Firebug或类似的浏览器工具重新启用输入并发送不同的值。你可能最好在模型服务器端使用你用来获取它的相同方法填充这个值。