【问题标题】:Enable/disable a form control in Razor editor template在 Razor 编辑器模板中启用/禁用表单控件
【发布时间】:2017-01-10 16:53:35
【问题描述】:

我有一个编辑器模板,其中一个表单控件被禁用:

@Html.TextBoxFor(m => m.MyField, new {@class = "form-control", disabled="disabled"})

编辑器模板在多个视图中使用,其中一个视图需要启用文本框,而在其他视图中需要禁用它。

是否可以对模板进行参数化,以便根据视图启用/禁用控件?

【问题讨论】:

  • DisableForm 属性添加到您的视图模型?
  • @stuartd 在这种情况下创建两个视图模型不是更好吗?
  • 您喜欢哪一种,取决于您的具体情况。不过你can get the view name form within the view
  • EditorFor() 方法有一个用于additionalViewDataoverload,因此您可以将值传递给模板并使用它来有条件地呈现属性
  • @StephenMuecke 假设 OP 使用 MVC 5.1 或更高版本,EditorFor 重载使用是可能的。但是在 MVC 4 及以下版本中,应该创建一个返回 TextBoxFor 的自定义 HTML 帮助程序,因为 EditorFor 在以前的版本中不支持 additionalViewData 属性。

标签: c# asp.net-mvc razor


【解决方案1】:

我能够根据 cmets 中的建议解决这个问题,使用 EditorForModel 重载来获取额外的视图数据。

在 EditorTemplate 中:

@((bool)ViewData["MyFieldEnabled"] ?
    Html.TextBoxFor(m => m.MyField, new { @class = "form-control" }) :
    Html.TextBoxFor(m => m.MyField, new { @class = "form-control", disabled = "disabled" }))

在视图中:

@Html.EditorForModel(new { MyFieldEnabled = false })

【讨论】:

    猜你喜欢
    • 2015-06-18
    • 1970-01-01
    • 2015-09-03
    • 2016-08-20
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多