【发布时间】:2011-02-02 02:27:40
【问题描述】:
我有以下带有 Html.TextBoxFor 表达式的标签,我希望内容是只读的,这可能吗?
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%>
【问题讨论】:
标签: .net html asp.net-mvc
我有以下带有 Html.TextBoxFor 表达式的标签,我希望内容是只读的,这可能吗?
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%>
【问题讨论】:
标签: .net html asp.net-mvc
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @readonly = true })%>
【讨论】:
使用以下内容:
@Html.TextBoxFor(m => m.Whatever, new {@readonly = "readonly"})
如果你想给它分配一个类,你可以用同样的方法,通过添加 @class= "" 财产。希望这会有所帮助:)
【讨论】:
根据@1c1cle 在评论中的建议更新了现代版本的 .NET:
<%= Html.TextBoxFor(model => Model.SomeFieldName, new {{"readonly", "true"}}) %>
请意识到这不是一种“安全”的方式来做到这一点,因为有人可以注入 javascript 来改变这一点。
需要注意的是,如果您将 readonly 值设置为 false,您实际上不会看到任何行为变化!因此,如果您需要基于变量来驱动它,您不能简单地将那个变量插入其中。相反,您需要使用条件逻辑来简单地不传递 readonly 属性。
这是一个未经测试的建议(如果有问题,您可以随时执行 if/else):
<%= Html.TextBoxFor(model => Model.SomeFieldName, shouldBeReadOnlyBoolean ? new {{"readonly", "true"}} : null) %>
【讨论】:
使其只读
@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})%>
【讨论】:
以下 sn-p 对我有用。
@Html.TextBoxFor(m => m.Crown, new { id = "", @style = "padding-left:5px", @readonly = "true" })
【讨论】:
这对我有用...
@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = "readonly" })
【讨论】:
<%: Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @autocomplete = "off", @readonly=true})%>
这是您设置多个属性的方式
【讨论】:
另一种可能性:
<%= Html.TextBoxFor(model => Model.SomeFieldName, new Dictionary<string, object>(){{"disabled", "true"}}) %>
【讨论】:
使用@Hunter 的例子,在新的 { .. } 部分,添加 readonly = true,我认为可以。
【讨论】:
事实上,Brain Mains 的答案几乎是正确的:
@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 类
和 Birthday 可能是字符串字段,您可能可以使用它来保存jQuery Datapicker 日期:)
<script>
$(function () {
$("#Birthday").datepicker({
});
});
</script>
这是一个真实的例子。
【讨论】:
@Html.TextBoxFor(model => model.IdUsuario, new { @Value = "" + User.Identity.GetUserId() + "", @disabled = "true" })
@disabled = "true"
效果很好
【讨论】:
您也可以禁用 TextBoxFor
@Html.TextBoxFor(x=>x.day, null, new { @class = "form-control success" ,@disabled="disabled" })
【讨论】:
通过将readonly属性设置为true或false在大多数浏览器中都不起作用,我已经做到了如下,当页面的模式是“reload”时,我没有包含“readonly”属性。
@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;" })}
【讨论】: