【问题标题】:Enable/Disable Html.EditorFor using ViewData使用 ViewData 启用/禁用 Html.EditorFor
【发布时间】:2012-11-16 19:53:09
【问题描述】:

我的应用程序是 MVC3 ASPX C#;我正在尝试使用以下命令启用/禁用 Html.EditorFor: 在模型中:

 public bool IsReadOnly { get; private set; }

在控制器中:

   if (MySession.Current._progress == 100)
       ViewData["ReadOnly"] = true;

在视图中:

... Inherits="System.Web.Mvc.ViewPage<Models.CTAHFormEdit>" %>
 <script runat="server" type="text/C#">
        bool isReadOnly = false;
        protected void Page_Load(object sender, EventArgs e)
        {
            if ((bool?)this.ViewData["ReadOnly"] == true)this.isReadOnly = true;
        }
    </script>
    <%: Html.EditorFor(model => model.Vessel_calcification, Model.IsReadOnly)%>

这不起作用。我也试过了:

  <%: Html.EditorFor(model => model.Subject_motion, new { @disable = true })%>

也没有用!

最好的解决方案,因为我在同一个视图中也有下拉列表和复选框是使用 @disable = true 和 @readonly = true 或 false 并且能够使用 ViewBag 更改 true 或 false。任何建议,提前感谢。

【问题讨论】:

  • 您是否尝试过创建自定义 EditorFor? stackoverflow.com/questions/5497183/… 我通常只是静态构建我的视图,而不是构建自定义 EditorFor,但这可能不是好的 OO 建议。

标签: asp.net-mvc-3


【解决方案1】:

你可以试试这个:

@Html.TextBoxFor(model => model.Subject_motion, new { @readonly = "readonly" })

这里解释一下EditorFor和TextBoxFor的区别:

Differences between Html.TextboxFor and Html.EditorFor in MVC and Razor

【讨论】:

  • TextBoxFor 不适用于我的应用程序,因为我正在使用显示为复选框的位字段;而不是改变所有领域;我创建了一个新视图并将 EditorFor 替换为 Html.DisplayFor,然后从控制器重定向到该视图。谢谢
猜你喜欢
  • 2012-06-10
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
相关资源
最近更新 更多