【问题标题】:ASP.NET MVC2 Master Page PlaceHolder visibilityASP.NET MVC2 母版页占位符可见性
【发布时间】:2011-09-01 10:13:56
【问题描述】:

asp:PlaceHolders 有一个 visible 属性,该属性控制其内容是否呈现在页面上。

我在 MVC2 母版页中声明了 PlaceHolder,并将其可见性设置为 false。

请您告诉我如何在从 MVC2 母版页继承的 MVC2 视图模板中控制 PlaceHolder 的可见性?

这似乎是一项简单的任务,但我正在努力了解如何实现它。我认为我应该能够从降序视图模板中访问 PlaceHolder(与 Web 表单代码隐藏一样)并在那里设置它的可见性,但这样做的方法是逃避我......

【问题讨论】:

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


    【解决方案1】:

    不要这样做。占位符是经典 WebForms 的遗留物。在 ASP.NET MVC 应用程序中操作服务器端控件是非常糟糕的,你不应该这样做。因此,只需忘记在用户控件上设置属性。幸运的是,在 Razor 中,占位符已被完全删除并替换为部分。所以不要编写以后无法迁移的代码。

    在 ASP.NET MVC 应用程序中显示/隐藏代码部分的一种方法是在视图中使用 if 语句。例如:

    <% if (Model.ShouldShowSection) { %>
        <div>Some super section</div>
    <% } %>
    

    在此示例中,我们正在视图模型上测试一个布尔值,呈现此视图的控制器操作将设置该值。

    【讨论】:

    • 感谢您的回答。不幸的是,母版页中无法访问模型(或 ViewData)(我想评估母版页中的条件以保持 DRY)。我们也没有使用 Razor(也许我们应该)。在我看来,母版页应该能够在其中包含条件元素 - 还有其他方法可以实现这一点吗?
    • @lukkea,您可以拥有一个基本视图模型并在其中强烈键入您的母版页。这个基础视图模型类将包含必要的属性。根据这种可见性条件的来源,可能还有其他方法可以实现它。
    • 再次感谢 - 事实证明我们使用的是“标准”母版页,而不是“MVC 2 查看母版页”。现在我已将应用程序修复为使用“MVC 2 查看母版页”,我们无法将母版页强输入模型,因为这是一个相当大、复杂的应用程序,并且某些页面使用动态类型。但是,ViewData 可以用来进行我的条件检查。
    猜你喜欢
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多