首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >asp.net MVC:禁用TextBox

asp.net MVC:禁用TextBox
EN

Stack Overflow用户
提问于 2009-09-15 09:51:38
回答 1查看 65.8K关注 0票数 19

我有一个Html.TextBox(),我需要在某些情况下禁用它。对于TextArea,它是这样的:

代码语言:javascript
复制
<%=primaryLang ? Html.TextArea("e.location", new { rows = 2, cols = 60 }) : Html.TextArea("e.location", new { rows = 2, cols = 60, disabled = "true" })%>

但对于TextBox,这是不可能的:

代码语言:javascript
复制
    <%=primaryLang ? 
      Html.TextBox("e.startDate") : 
        Html.TextBox("e.startDate", new { disabled = "true"})%>

它将在值中发出{disabled=true}。这是因为允许您传递HtmlAttributes的唯一函数也需要传递模型。这个视图是强类型的,模型是自动填充的。

如果我像这样传递它:

代码语言:javascript
复制
Html.TextBox("e.startDate", Model.e.startDate, new { disabled = "true"})

或者像这样:

代码语言:javascript
复制
Html.TextBox("e.startDate", null, new { disabled = "true"})

GET版本可以工作,但POST版本将发出NullReferenceException。以上两种方法似乎都有完全相同的效果。两者都将在GET上显示来自模型的正确数据。

如果我像这样放纵它:

代码语言:javascript
复制
Html.TextBox("e.startDate") 

它将正常工作,对于POST和GET...

为什么?有什么方法可以实现吗?

谢谢!:)

感谢下面的答案,我是这样解决的:

代码语言:javascript
复制
<%=primaryLang ? 
        Html.TextBox("e.startDate") : 
          Html.Hidden("e.startDate") + Html.TextBox("e.startDate", null, new { disabled = "true"})%>
EN

回答 1

Stack Overflow用户

发布于 2009-09-15 10:34:12

在POST中,"Model“或"e”属性可能为空。

你可以试试这个:

代码语言:javascript
复制
<%if (Model != null && Model.e != null) { %>
<%=Html.TextBox("e.StartDate", Model.e.StartDate, primaryLang ? null :  new { disabled = "disabled" })%>
<%}%>
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1426221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档