【问题标题】:programmatically apply style to an asp.net website以编程方式将样式应用于 asp.net 网站
【发布时间】:2012-12-04 17:28:17
【问题描述】:

使用新的空网站应用程序

我想通过包含一些 css 属性的自定义值的 fie 将样式应用于 aspx 页面,我不确定哪种方法更好。

我仍在测试这个概念,我有一个保存这些值的文件:

width;100px    width;130px    background-color;#aac93f

这些值不是硬编码的,而是由另一个应用程序生成的

我想将它读入应用程序。

我能想到的只有两种方法:

`File.ReadAllLines` or `File.ReadAllText`.

然后通过后面的代码通过处理后的数据设置html元素的样式属性

htmltag.Style.Add("width", setting1)....etc

或

我还可以从动态/程序化数据中加载样式表

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

<!--   and put a C# server code like below -->

<%=someVariableOrCsMethodReturnedValue%>
</head>

这样就可以保存带有加载值的格式化样式。

这是为 css 样式加载自定义值的方式吗?

【问题讨论】:

  • 您希望 每个 html 元素都使用相同的样式吗?或者究竟是什么?
  • 使用内联样式不受欢迎的原因有很多:样式不被缓存,它们难以覆盖等。外部样式表被认为是设置网站样式的最佳方式。你看过 CSS 预处理器(Sass、LESS、Stylus)吗?
  • @Blachshma 我也以编程方式将它与每个元素的 id 一起使用,或者我可以采用 css 样式方法为每个元素提供一个类

标签: c# asp.net css webforms


【解决方案1】:

您可以通过使用将 CSS 加载到 .NET 中的对象

objectName.Attributes.Add("style", "width:100px; width:130px; background-color:#aac93f");

但是,不建议使用此方法,因为您将其设置为 css 的内联编码,如果您具有相同的属性,则不会应用上部 css 设置。

最好的方法是设置一个外部 CSS 类并将它们全部设置在那里:

objectName.Attributes.Add("class", "exampleClass");

在你的 CSS 类中:

.exampleClass{width:100px; width:130px; background-color:#aac93f}

【讨论】:

  • 我认为它适合我的 settig,因为它是按照 object 格式化的,正如你所说,我称之为 Element 或 HtmlElement 所以我也可以在所有对象上使用一些循环以编程方式进行/elements so then : 当前迭代-currentObject.Attributes.Add("style" ,Settings.elementAt(i));
【解决方案2】:

<style type="text/css" runat="server" id="htmlCss"></style>

这将在页面中生成一个 HtmlGenericControl 类型的字段。

在页面生命周期事件之一(Page_Load、Page_Init 等)中,分配文字 CSS 定义,如下所示:

var css = @"
body
{
  background-color:#b0c4de;
}";
htmlCss.InnerHtml = css;

【讨论】:

  • 嘿,devio,谢谢,我喜欢这个想法——我会对其进行一些研究……尽管你能提供一个更广泛的用法示例吗?
  • 我认为它比我乍一看更简单,谢谢,我认为我可以使用它,我稍后也会使用@beko 的 appprocah 进行测试,因为它(似乎)实现起来比字符串格式更复杂
【解决方案3】:

您还可以将自定义 CSS 写入一个 asp.net Literal 对象,将其放置在您的网络表单中的某个位置,这样您的所有 CSS 就会像这样呈现...

在你的代码后面:

Literal1.Text = "<style>" + File.ReadAllText(filepathhere) + "</style>";

在你的页面会呈现:

<style>
    .class1
    {
        width: 100px;
    }

    .class2
    {
        width: 100px;
    }
</style>

然后让您的每个元素引用您的 css 中包含的类。

【讨论】:

  • 我认为这里的一些 cmets 是为了避免它(?)
  • 这正是我想做的,只是文件保存了该值,所以我应该以某种方式将更多的 html 硬编码到后面的代码中,或者使用 HtmlTextWriter 类中的常量。 ..Possession,再次......我认为建议不要使用这种方法?
  • devio 的回答基本上是一样的,但我更喜欢他的。我会同意的。
  • 是的,谢谢你的评论,你能看看这个吗? stackoverflow.com/questions/13908695/…
猜你喜欢
  • 2019-02-23
  • 1970-01-01
  • 2017-07-09
  • 2015-09-29
  • 1970-01-01
  • 2017-10-07
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
相关资源
最近更新 更多