【问题标题】:Setting visibility of a textbox in MVC3 Razor view engine在 MVC3 Razor 视图引擎中设置文本框的可见性
【发布时间】:2011-09-24 05:49:05
【问题描述】:

我是 MVC 3 剃刀视图引擎的新手。 我想根据我的视图模型中的值在运行时设置文本框的可见性。

但下面的代码不起作用。

<td>
    @Html.TextBox("CompanyName", "", new { visible = "false" })
</td>

一旦上面的代码开始工作,我可以用@Model.EnableCompanyName 代替硬编码的“false”。

所以请帮我纠正上面的代码。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-2


    【解决方案1】:

    这将根据您的 bool Model.EnableCompanyName 更改显示类型 :)

    希望对你有帮助!

    @{
    String displayMode = (Model.EnableCompanyName) ? "inline" : "none";
    @Html.TextBox("CompanyName", "", new { style = "display:" + displayMode + ";" })
    }
    

    【讨论】:

    • 谢谢克里斯。只需在您的第一个作业中将 none 替换为 false 并按预期工作即可。
    • 糟糕!小学生错误大声笑。更新答案以反映这一点。 :)
    【解决方案2】:

    这与剃须刀本身无关。 visible 不是 input 元素的有效属性(这是 Html.TextBox 将生成的)。你需要

    @Html.TextBox("CompanyName", "", new { style = "display:none;" })
    

    在此处查看此示例:

    http://jsfiddle.net/QxSpU/

    【讨论】:

      【解决方案3】:

      更新:

      @Html.TextBox("CompanyName", "", new { style = Model.EnableCompanyName ? "display:inline" : "display:none" })
      

      【讨论】:

      • 嗨,即使是 false 的硬编码也不起作用。例如:@Html.TextBox("CompanyName", "", new { visible = "false" }) 不起作用。
      • 所以,你需要通过:new { style = "display:none" }
      • 下次尝试更准确地指定您想要什么。如果你不知道如何隐藏 DOM 元素,这是另一个问题。我只是误会你了。
      【解决方案4】:

      试试这个:

      @Html.TextBox("CompanyName", "", new {Style= Model.EnableCompanyName ? "visibility:visible" : "visibility:hidden"  })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多