加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Html.TextBox条件属性与ASP.NET MVC预览5

发布时间:2020-12-15 18:38:50 所属栏目:asp.Net 来源:网络整理
导读:我有一个强类型的MVC视图控件,它负责用户可以创建和编辑客户端项目的UI。我希望他们能够在创建时定义ClientId,但不能编辑,并将其反映在UI中。 为此,我有以下一行: %= Html.TextBox("Client.ClientId",ViewData.Model.ClientId,new { @readonly = (ViewD
我有一个强类型的MVC视图控件,它负责用户可以创建和编辑客户端项目的UI。我希望他们能够在创建时定义ClientId,但不能编辑,并将其反映在UI中。

为此,我有以下一行:

<%= Html.TextBox("Client.ClientId",ViewData.Model.ClientId,new 
 { @readonly = 
   (ViewData.Model.ClientId != null && ViewData.Model.ClientId.Length > 0 
      ? "readonly" : "false") 
 } )
%>

看起来,无论我给予readonly属性(甚至是“false”和“”),Firefox和IE7都会使输入成为只读,这是令人厌恶的反直觉的。有没有一个很好的,三元运算符的方法来完全放弃属性,如果不需要的话?

解决方法

艰难的问题…但是,如果您只想定义readonly属性,可以这样做:
<%= Html.TextBox("Client.ClientId",ViewData.Model.ClientId != null && ViewData.Model.ClientId.Length > 0 
    ? new { @readonly =  "readonly" } 
    : null) 
%>

如果要定义更多属性,则必须定义两个匿名类型,并具有多个属性副本。例如,这样的东西(我不喜欢)

ClientId.Length > 0 
  ? (object)new { @readonly = "readonly",@class = "myCSS" } 
  : (object)new { @class = "myCSS" }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读