使用Html.TextBoxFor时,我可以将文本框设置为只读吗?

Awk*_*der 56 .net html asp.net-mvc

我有以下带有Html.TextBoxFor表达式的标记,我希望内容只读,这可能吗?

<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%>
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 110

<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @readonly = true })%>
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的,但@ readonly = false为我提供了相同的结果.因此,readonly的值决定了功能,但属性本身的存在. (12认同)
  • 有没有办法克服这个?基本上我想在其他一些变量(愚蠢的要求)上动态分配@readonly = false或true (3认同)

Rua*_*enk 39

使用以下内容:

 @Html.TextBoxFor(m => m.Whatever, new {@readonly = "readonly"})
Run Code Online (Sandbox Code Playgroud)

如果要为其分配类,可以通过添加@class =""属性以相同的方式执行.希望这可以帮助 :)


Jax*_*ian 37

根据@ 1c1cle在评论中的建议更新了.NET的现代版本:

<%= Html.TextBoxFor(model => Model.SomeFieldName, new {{"readonly", "true"}}) %>
Run Code Online (Sandbox Code Playgroud)

要意识到这不是一种"安全"的方式,因为有人可以注入javascript来改变它.

需要注意的是,如果将该readonly值设置为false,您实际上不会看到行为的任何变化!因此,如果您需要根据变量驱动它,则不能简单地将该变量插入其中.相反,您需要使用条件逻辑来简单地不传递该readonly属性.

这是一个未经测试的建议,如何执行此操作(如果有问题,您可以随时执行if/else):

<%= Html.TextBoxFor(model => Model.SomeFieldName, shouldBeReadOnlyBoolean ? new {{"readonly", "true"}} : null) %>
Run Code Online (Sandbox Code Playgroud)

  • new Dictionary <string,object>(){{"readonly","false"}}和new Dictionary <string,object>(){{"readonly","anything"}}提供相同的结果. (3认同)

Ali*_*avi 13

使它只读

@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @readonly="true"})
Run Code Online (Sandbox Code Playgroud)

要禁食

@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @disabled="true"})
Run Code Online (Sandbox Code Playgroud)


Mat*_*ing 7

<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new {readonly=true})%>
Run Code Online (Sandbox Code Playgroud)


小智 7

以下代码段对我有用.

@Html.TextBoxFor(m => m.Crown, new { id = "", @style = "padding-left:5px", @readonly = "true" }) 
Run Code Online (Sandbox Code Playgroud)


小智 5

这项工作对我来说...

@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = "readonly" })
Run Code Online (Sandbox Code Playgroud)