代码之家  ›  专栏  ›  技术社区  ›  AwkwardCoder

使用html.text box for时,是否可以将文本框设置为只读?

  •  53
  • AwkwardCoder  · 技术社区  · 14 年前

    我有以下带有html.textbox for expression的标记,我希望内容是只读的,这是可能的吗?

    <%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%>
    
    14 回复  |  直到 7 年前
        1
  •  37
  •   Jaxidian    7 年前

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

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

    一定要意识到这不是一个“安全”的方法,因为有人可以通过注入JavaScript来改变这一点。

    需要注意的是,如果你设置了 readonly 值到 false 你不会看到任何行为改变!因此,如果您需要基于一个变量来驱动它,那么您不能简单地将该变量插入其中。相反,您需要使用条件逻辑来简单地不传递它 只读 属性。

    下面是一个未经测试的关于如何执行此操作的建议(如果此操作有问题,则可以始终执行if/else操作):

    <%= Html.TextBoxFor(model => Model.SomeFieldName, shouldBeReadOnlyBoolean ? new {{"readonly", "true"}} : null) %>
    
        2
  •  107
  •   Dan    14 年前
    <%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @readonly = true })%>
    
        3
  •  34
  •   Ruaan Volschenk    10 年前

    使用以下内容:

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

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

        4
  •  12
  •   Ali Adravi    10 年前

    使其只读

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

    暗黑

    @Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @disabled="true"})
    
        5
  •  7
  •   Matt Dearing    14 年前
    <%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new {readonly=true})%>
    
        6
  •  6
  •   Tiny Giant    9 年前

    下面的片段对我很有用。

    @Html.TextBoxFor(m => m.Crown, new { id = "", @style = "padding-left:5px", @readonly = "true" }) 
    
        7
  •  4
  •   Zyon    13 年前
    <%: Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @autocomplete = "off", @readonly=true})%>
    

    这是如何设置多个属性的方法

        8
  •  3
  •   user1021124    13 年前

    这是我的工作…

    @Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = "readonly" })
    
        9
  •  2
  •   hbpatrick81    10 年前

    另一种可能性是:

    <%= Html.TextBoxFor(model => Model.SomeFieldName, new Dictionary<string, object>(){{"disabled", "true"}}) %>
    
        10
  •  1
  •   Brian Mains    14 年前

    使用@hunter的例子,在新的..}部分,添加readonly=true,我认为这会起作用。

        11
  •  0
  •   Bjorn Vdkerckhove    11 年前

    事实上,大脑主干的答案几乎是正确的:

    @Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = true })
    
        12
  •  0
  •   NoWar    11 年前

    如果必须应用自定义类,则可以使用

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

    在哪里

    公共领域 是CSS类

    生日 可能是字符串字段,您可以使用它 jQuery Datapicker 日期:)

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

    这是现实生活中的一个例子。

        13
  •  0
  •   Kaushik Ghosh    11 年前

    通过将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;" })}
    
        14
  •  0
  •   rickslayer    8 年前
       @Html.TextBoxFor(model => model.IdUsuario, new { @Value = "" + User.Identity.GetUserId() + "", @disabled = "true" })
    
    @disabled = "true"
    

    工作得很好