asp.net mvc从视图修改主文件

时间:2010-09-08 21:13:44

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

我需要从视图文件(.aspx)向body标签添加class属性,但标签位于主文件中。如何从视图中访问body标签?

2 个答案:

答案 0 :(得分:0)

在您的视图输出中,您只需添加一个jQuery客户端脚本来执行此操作,该脚本将在您的页面拼接在一起时运行:

$('body').addClass('yourClass');

另一种方法是将类数据存储在控制器中,如:

ViewData["MasterPageBodyClass"] = "yourClass";

然后在MasterPage视图中,您可以检查是否存在此信息并添加(如果存在):

<%
    string bodyClass = "";
    if (ViewData["MasterPageBodyClass"] != null)
    {
        bodyClass = "class=\"" + ViewData["MasterPageBodyClass"].ToString() + "\"";
    }
%>
<body <%= bodyClass %>>

只有需要将类附加到正文的控制器操作实际上需要将该类存储在ViewData中,其他所有操作都可以忽略它。

答案 1 :(得分:0)

认为一个更简单的解决方案就是在master属性中为class属性设置占位符:

<body class='someOtherClass <asp:ContentPlaceHolder ID="BodyCssOverrides" runat="server" />' >

然后在你的视图中设置正确的类:

<asp:Content ContentPlaceHolderID="BodyCssOverrides" runat="server">yourBodyClass</asp:Content>

无需脚本来设置它或ViewData。

请记住,masterPage是一个可以帮助您而不会妨碍您的模板, 如果某些内容需要在视图之间进行更改 - 请为其创建一个placeHolder