【发布时间】:2010-11-28 09:55:35
【问题描述】:
我有一个 Html.TextBox(),我需要在某些情况下禁用它。使用 TextArea 它是这样的:
<%=primaryLang ? Html.TextArea("e.location", new { rows = 2, cols = 60 }) : Html.TextArea("e.location", new { rows = 2, cols = 60, disabled = "true" })%>
但是使用 TextBox 是不可能的:
<%=primaryLang ?
Html.TextBox("e.startDate") :
Html.TextBox("e.startDate", new { disabled = "true"})%>
它会在值中发出 {disabled=true} 。这是因为唯一允许您传递 HtmlAttributes 的函数也需要传递模型。这个视图是强类型的,模型是自动填充的。
如果我这样传递:
Html.TextBox("e.startDate", Model.e.startDate, new { disabled = "true"})
或者像这样:
Html.TextBox("e.startDate", null, new { disabled = "true"})
GET 版本可以工作,但 POST 版本会发出 NullReferenceException。以上两者似乎具有完全相同的效果。两者都会在 GET 上显示来自模型的正确数据。
如果我这样放纵它:
Html.TextBox("e.startDate")
它可以正常工作,对于 POST 和 GET...
为什么?有什么方法可以完成吗?
谢谢! :)
感谢下面的答案,我这样解决了:
<%=primaryLang ?
Html.TextBox("e.startDate") :
Html.Hidden("e.startDate") + Html.TextBox("e.startDate", null, new { disabled = "true"})%>
【问题讨论】:
标签: asp.net-mvc