我希望我的观点能够为<body>
标记指定一个类,该标记位于我的母版页中。
我的第一步是做这样的事情:
<asp:Content ContentPlaceHolderID="BodyClassContent" runat="server">
view-item</asp:Content>
但是,这在主页面中需要这个,这不起作用:
<body class="<asp:ContentPlaceHolder ID="BodyClassContent" runat="server" />">
对此有何解决方案?
答案 0 :(得分:5)
在布局中,您可以在body标签上执行此操作:
<body @RenderSection("BodyAttributes", false)>
然后在您的视图中,您可以执行此操作:
@section BodyAttributes {
id="login" class="login"
}
编辑:我今天也必须使用VB.NET和WebForms,并找到了实现equivalent
的便捷链接答案 1 :(得分:4)
为什么不在您的母版页中这样做:
<body class="<%=ViewData["bodyClass"].toString()%>">
然后在Controller操作中设置ViewData [“bodyClass”]?这应该是等同的......
答案 2 :(得分:4)
我建议采用不同的方法。
您可以从MasterModel开始创建视图模型的层次结构。实例化视图对象时,将体类传递给它。
public class MasterModel
{
string BodyCss { get; set; }
public MasterModel (string bodyCss)
{
BodyCss = bodyCss;
}
}
public class MyView1Model : MasterModel
: base ("body-view1")
{
}
然后在您的主视图中应该强烈键入MasterView:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<MasterModel>" %>
你刚才写道:
<body class="<%= Model.BodyCss %>"></body>
答案 3 :(得分:4)
您还可以在视图中指定希望设置它的body id属性:
@{
ViewBag.Title = "Test";
ViewData["BodyID"] = "test";
Layout = "~/Views/Shared/_Layout.cshtml";}
这有助于将视图与控制器分离,控制器(和/或视图模型)不需要知道body标签的id属性。
在主页面中设置body标签的id,如下所示:
<body id="@ViewData["BodyID"]">