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

我有以下标记与Html.TextBoxForexpression式,我想内容只能读取,这是可能的吗?

<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%> 

更新.NET的现代版本@ 1c1cle的build议在评论中:

 <%= Html.TextBoxFor(model => Model.SomeFieldName, new {{"readonly", "true"}}) %> 

请意识到这不是一个“安全”的方式来做到这一点,有人可以注入JavaScript来改变这一点。

需要注意的是,如果将该readonly值设置为false ,则实际上不会看到任何行为改变! 所以如果你需要根据一个variables来驱动它,你不能简单地在那里插入这个variables。 相反,您需要使用条件逻辑来简单地不传递该readonly属性。

这是一个未经testing的build议,如何做到这一点(如果有这个问题,你总是可以做一个if / else):

 <%= Html.TextBoxFor(model => Model.SomeFieldName, shouldBeReadOnlyBoolean ? new {{"readonly", "true"}} : null) %> 
 <%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @readonly = true })%> 

使用以下内容:

  @Html.TextBoxFor(m => m.Whatever, new {@readonly = "readonly"}) 

如果你想给它分配一个类,你可以用同样的方法,通过添加@class =“”属性。 希望这可以帮助 :)

使其只读

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

拨打

 @Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @disabled="true"}) 
 <%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new {readonly=true})%> 
 <%: Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @autocomplete = "off", @readonly=true})%> 

这是你如何设置多个属性

这个工作对我来说…

 @Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = "readonly" }) 

以下片段为我工作。

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

使用@Hunter的例子,在新的{..}部分,添加readonly = true,我认为这将工作。

另一种可能性:

 <%= Html.TextBoxFor(model => Model.SomeFieldName, new Dictionary<string, object>(){{"disabled", "true"}}) %> 

事实上,脑电的答案几乎是正确的:

 @Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = true }) 

如果你必须申请你的自定义类,你可以使用

  @Html.TextBoxFor(m => m.Birthday, new Dictionary<string, object>() { {"readonly", "true"}, {"class", "commonField"} } ) 

在哪

commonField是CSS类

生日可能是string字段,你可能可以用来保持jQuery Datapickerdate:)

 <script> $(function () { $("#Birthday").datepicker({ }); }); </script> 

这是一个真实的例子。

通过将readonly属性设置为true或false在大多数浏览器中不起作用,我已经做了如下,当页面的模式是“重新加载”,我没有包括“只读”属性。

 @if(Model.Mode.Equals("edit")){ @Html.TextAreaFor(model => Model.Content.Data, new { id = "modEditor", @readonly = moduleEditModel.Content.ReadOnly, @style = "width:99%; height:360px;" }) } @if (Model.Mode.Equals("reload")){ @Html.TextAreaFor(model => Model.Content.Data, new { id = "modEditor", @style = "width:99%; height:360px;" })} 
  @Html.TextBoxFor(model => model.IdUsuario, new { @Value = "" + User.Identity.GetUserId() + "", @disabled = "true" }) @disabled = "true" 

工作得很好