最佳实践:ASP.NET 中的 CSS 或主题?

Posted

技术标签:

【中文标题】最佳实践:ASP.NET 中的 CSS 或主题?【英文标题】:Best Practices: CSS or Themes in ASP.NET? 【发布时间】:2010-10-04 23:52:13 【问题描述】:

什么时候应该使用 ASP.NET 主题,什么时候应该使用 CSS?使用一个比另一个有什么优点或缺点?

【问题讨论】:

【参考方案1】:

一起更好!

但主题不是 CSS 的替代品,或者它们不是为与 CSS 相同的目的而构建的。它的目的是在您的应用程序上定义不同的主题并用一行来更改它们。主题可以包括 CSS 文件、图像文件和皮肤。

使用皮肤,您可以为asp.net 控件定义样式,因此它包含复杂而完整的解决方案。例如,您可以定义一个 gridview 并定义它的样式和属性。您可以在应用程序范围内定义它。

所以你我认为他们在一起更好,但不等于比较。

【讨论】:

您也可以使用大多数 ASP.Net 控件的 CssClass 标记属性来执行此操作。 所以主题仅适用于 Web 服务器控件? 好点。主题也可用于应用程序编程,但就本文而言,它参考了用于 Web 的 ASP.Net。 @loxp - 你的意思是主题也可以在桌面应用程序上使用?我上一条评论的意思是,如果您只能将主题应用于以 <.. element> 【参考方案2】:

我建议在主题上使用 CSS。这样做的原因是在 CSS 中,您可以修改样式以使其适用于所有浏览器。你可以对主题做同样的事情,但微软的设计师因修复你修复的东西而臭名昭著,以使它们在所有浏览器上都能工作,因此适得其反。坚持使用 CSS,你会花更少的时间在胡闹上。

【讨论】:

主题只有在您实现“换肤”类型功能或不熟悉浏览器客户端技术时才真正有意义。 Ishmael,CSS 也非常适合用于蒙皮。只需加载一个不同的 CSS 文件即可。甚至更好。由于 CSS 代表“级联 ...”,您可以覆盖现有的样式定义或将它们组合起来 :)【参考方案3】:

如果您使用会员、个人资料和个性化,主题会非常方便。除此之外,是的,Visual Studio 设计器是臭名昭著的。如果您考虑到浏览器兼容性,您应该广泛使用 CSS。

【讨论】:

为什么它们在这种情况下很方便?因为现有的控件集成? @Igor = 基于主题和控件的个性化架构,可以根据成员资格和个人资料非常适合。 codeidol.com/asp/asp.net-illustrated/… 是一个简单的例子【参考方案4】:

如前所述,它们并不相互排斥。我有机会拥有多个主题,它们本身包含自己的一组 CSS/Media/Skin 文件,这些文件根据站点配置是适当的。

【讨论】:

【参考方案5】:

如果您正在考虑聘请外部设计机构或设计师,那么使用 CSS 会更好,因为 CSS 对他们来说是众所周知的 - 因为主题更加以开发人员/VS 为中心。

【讨论】:

【参考方案6】:

你应该把它们结合起来。将主题文件夹中的 css 文件用于网站中所有 html 元素的正常样式(包括所有生成的元素)。

在控件的皮肤文件中,可以设置默认的css类。其他属性,例如元素的布局和默认行为(示例:日历控件)也可以在此处进行编辑。

皮肤文件适用于所有您无法使用 css 轻松完成的布局特定配置,但使用控件的 .net 属性。

【讨论】:

一个特定于皮肤的示例是 Calendar.DayNameFormat【参考方案7】:

我建议同时使用两者,我使用主题在控件上设置 css 类,然后在 css 文件中设置它们的样式。 示例:

皮肤:

<asp:CompareValidator runat="server" Text="*" CssClass="Validator" Display="Dynamic" />
<asp:RangeValidator runat="server" Text="*" CssClass="Validator" Display="Dynamic" />
<asp:CustomValidator runat="server" Text="*" CssClass="Validator" Display="Dynamic" />
<asp:RegularExpressionValidator runat="server" Text="*" CssClass="Validator" Display="Dynamic" />
<asp:RequiredFieldValidator runat="server" Text="*" CssClass="Validator" Display="Dynamic" />
<asp:ValidationSummary runat="server" CssClass="ValidationSummary" />

CSS:

.Validator

    color: Red;   


.ValidationSummary

    font-size: 0.8em;


.ValidationSummary > ul

    list-style-type: disc;
    padding: 0 0 0 15px; 
    margin: 0;


.ValidationSummary > ul > li

    padding: 0;
    margin: 0;
    color: Red;

【讨论】:

以上是关于最佳实践:ASP.NET 中的 CSS 或主题?的主要内容,如果未能解决你的问题,请参考以下文章

实体框架和 ASP.NET 的最佳实践

ASP.NET MVC 4,EF5,模型中的唯一属性 - 最佳实践?

具有最佳实践的示例 N 层 ASP.NET MVC3 应用程序(使用 EF 4.1)

ASP.NET 应用程序可伸缩性最佳实践指南

ASP.NET MVC 中密码重置的最佳实践

在 ASP.NET WebApi 中路由相关实体的最佳实践是啥