ASP.Net MVC UserControls 中处理 CSS 的策略

Posted

技术标签:

【中文标题】ASP.Net MVC UserControls 中处理 CSS 的策略【英文标题】:Strategies for dealing with CSS in ASP.Net MVC UserControls 【发布时间】:2010-09-25 14:39:46 【问题描述】:

我刚开始使用 ASP.Net MVC 框架,今天我创建了一个使用一些 CSS 的简单 UserControl。由于 CSS 在单独的文件中声明并包含在调用 UserControl 的视图中,而不是在 UserControl 本身中,因此 Visual Studio 找不到 UserControl 中使用的任何 CSS 类。这让我开始思考在 UserControls 中处理 CSS 的最合适方式是什么。

如果在不同的上下文中使用相同的控件并且需要能够适应调用视图的样式,则在使用 UserControl 的视图中声明 CSS 会提供更大的灵活性。

让 UserControl 提供自己的 CSS 将导致更清晰的分离,并且视图不需要了解有关 UserControl 生成的 html/CSS 的任何信息,但代价是控件的固定外观。

由于我对框架完全陌生,我猜人们已经对此得出了一些很好的结论。

那么,你会让 UserControl 处理它自己的 CSS,它应该依赖于调用 View 中声明的 CSS,还是有其他更好的解决方案?

【问题讨论】:

【参考方案1】:

如果您查看像 Yahoo UI 这样的可换肤工具包,它会记录每个控件使用的类,然后为整个工具包提供单个皮肤文件。通过换出单个皮肤文件,您可以更改整个网站的外观。

我假设 99.9% 的情况下,您希望自定义控件外观,而不是预先定义它们的外观和感觉。

例如here 是为 Yahoo 的 TabView 控件定义的 CSS

【讨论】:

【参考方案2】:

快速点...您的视图可以了解 HTML...这就是它们的用途。我会推荐(如果你想变得更酷),是在你的“MVC UserControl”中添加一个参数来指定类名。示例:

<%= MyHelperClass.Marquee("This text will scroll!!!", "important-text") %>

我当然假装“重要文本”是我想要添加到我的控件的类名。

我假设当您说“UserControl”时,您指的是上面那个链接中的示例。

【讨论】:

【参考方案3】:

它应该始终在您的全局 CSS 中。如果你把这个传递给设计师,你就不必解释哪个控件定义了 x 样式等。

【讨论】:

以上是关于ASP.Net MVC UserControls 中处理 CSS 的策略的主要内容,如果未能解决你的问题,请参考以下文章

七天学会ASP.NET MVC ——深入理解ASP.NET MVC

Asp.net mvc和asp.net有啥区别?

Asp.net mvc和asp.net有啥区别?

七天学会ASP.NET MVC ——ASP.NET MVC 数据传递

ASP.NET MVC

ASP.NET MVC 5、ASP.NET Core MVC 5 有啥区别?