【问题标题】:How do I conditionally specify whether HTML input is disabled/readonly OR NOT? [duplicate]如何有条件地指定 HTML 输入是否被禁用/只读? [复制]
【发布时间】:2015-03-25 04:53:41
【问题描述】:

这是我想要达到的目标的示例:

@Html.EditorFor(m => m.Description, 
  new { htmlAttributes = 
    new 
    {
      @class = "form-control",
      @readonly = Model.IsReadOnly,
      disabled = Model.IsDisabled
    }
  })

问题是浏览器认为存在readonlydisabled标记而不检查它们的内容,所以当IsReadOnlyIsDisabled属性为false时,它仍然会显示为@ 987654329@.

有什么简单的解决办法吗?

【问题讨论】:

  • 也许你应该为此写your own extension
  • 您需要测试每个条件 - 例如@Html.EditorFor(m => m.Description, Model.IsDisabled ? (object)new { disabled = "disabled" } : (object)new { })
  • @StephenMuecke 是迄今为止最方便的答案。为什么不写一个正确的答案?
  • @Shimmy,只是展示了你能做什么,但它会很长而且很混乱,因为你有两个条件要检查(Model.IsReadOnlyModel.IsDisabled)。如果这不是“一次性”,我会考虑使用自定义助手(您真的要禁用控件吗?-他们不会回发)。
  • @StephenMuecke,只是为了示例而将它们包括在内。无论如何,我找到了一个优雅的解决方案并将其发布到here,因为这个问题作为一个骗子被关闭了。

标签: c# html asp.net-mvc razor disabled-input


【解决方案1】:

HTML :-

@Html.EditorFor(m => m.Description, 
  new { htmlAttributes = 
    new 
    {
      @class = "form-control"
    }
});

如图所示尝试使用 jQuery :-

if(@Json.Encode(Model.IsReadOnly))
{
   $('#Description').attr('readonly','readonly')
}

if(@Json.Encode(Model.IsDisabled))
{
   $('#Description').attr('disabled','disabled')
}

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2016-05-15
    • 2013-01-28
    相关资源
    最近更新 更多