首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用c#文件在body标签上应用css类

如何使用c#文件在body标签上应用css类
EN

Stack Overflow用户
提问于 2012-02-17 15:50:49
回答 4查看 3K关注 0票数 2

我正在使用带有剃刀引擎的ASP.NET MVC3,我想根据页面调用将css类应用于body标签。我想在子页面中添加类名称,这将影响布局页面,其中有主体标签。并且不想使用jquery,因为它在页面呈现之后执行。我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-17 16:15:47

首先,jQuery的.ready函数在DOM可用后执行,因此现在是开始与页面元素交互的最佳时机。( http://api.jquery.com/ready/ )如果您遇到导致样式“闪烁”的行为,您可能不希望将display:none应用于body元素,并在应用css类后将其移除。

但是如果你真的不想使用jQuery,你应该考虑要么创建一个变量来保存你的css类名称作为视图模型的一部分,要么使用ViewBag.CssClass,它应该在控制器的每个动作中声明(或者在基本控制器的OnActionExecuting方法中声明)。

这里要考虑的是理解和遵循MVC模式,其中视图和业务逻辑应该分开。因此,在我看来,您应该避免在视图构建过程中使用控制器。

票数 1
EN

Stack Overflow用户

发布于 2012-03-27 23:04:47

虽然您可能完全控制了HTML,但我们需要一个解决方案,因此这里就是一个解决方案;-)

在_layout.cshtml页面中

代码语言:javascript
运行
复制
<body class="@RenderSection("BodyClass", false)">

这将在所有子页面中查找一个部分,但表示如果找不到也不用担心

然后在您的子视图中执行以下操作

代码语言:javascript
运行
复制
@section BodyClass {productList}

将它保持在一行上,这样输出的HTML就会看起来很好,而且您还可以构建类名。

代码语言:javascript
运行
复制
@section BodyClass {productList generic}

这个想法非常适合特定于DOM的页面代码,为什么不签出http://paulirish.com/2009/markup-based-unobtrusive-comprehensive-dom-ready-execution/

或者我在这里的扩展版本https://github.com/AaronLayton/H5BP-Core

我的方式允许您执行页面特定的代码,但允许您将所有Javascript放在单独的页面中,这样每个页面都变得易于管理。最后一步是将所有JS连接并缩小到一个文件中;-)

票数 5
EN

Stack Overflow用户

发布于 2013-02-20 04:44:35

Aaron上面的回答对MVC3很有效,但我发现MVC4在单行部分语句上卡住了:

代码语言:javascript
运行
复制
@section BodyClass {productList}

相反,您需要使用:

代码语言:javascript
运行
复制
@section BodyClass {@("productList")}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9324661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档