ned*_*lud 6 css asp.net jquery-ui
我是ASP.NET新手,但我正在开发一个自定义控件,里面有一个多视图控件,显示了一堆不同的东西.其中一些使用JQuery UI元素(如制表符和手风琴)显示,这些元素将进行相当多的自定义.
由于我将有很多CSS规则仅适用于自定义控件中的元素(而不是我们网站的其他部分),我想知道在哪里放置CSS样式规则.
我通常只是在网站根目录中放置样式表并从那里引用它.但是当我使用ASP.NET时,我觉得我应该将所有代码(包括CSS,JS等)放在自定义控件本身中.这感觉更"程序化",将所有东西保持在一起.
任何人都可以提出我应该如何做到这一点?ASP.NET中Web开发的最佳实践是什么?
如果您正在创建的控件位于单独的程序集中,则可以将CSS文件嵌入到程序集中以使其可重用,并从控件创建指向这些文件的直接链接,然后在控件中注册它们以呈现为link标记在你的页面中
注意:请记住,您需要将程序集中的CSS文件标记为嵌入式资源
只需选择您的文件| 然后proeprties并更改其Build Action属性并将其设置为:embedded Resource

在以下代码中:
AjaxEnabled.Web.UI 表示程序集的命名空间
DefaultStyle.css 表示嵌入的CSS文件名
以下代码示例显示了所需的步骤:(在您的自定义服务器控件中)
[assembly: WebResource("AjaxEnabled.Web.UI.DefaultStyle.css", "text/css")]
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (this.Page.Header != null)
{
if (!this.Page.ClientScript.IsClientScriptBlockRegistered("defaultCss"))
{
var link = new HtmlLink();
link.Href = this.Page.ClientScript.GetWebResourceUrl(
typeof(YourControlType),
"AjaxEnabled.Web.UI.DefaultStyle.css"
);
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("type", "text/css");
this.Page.Header.Controls.Add(link);
this.Page.ClientScript.RegisterClientScriptBlock(
typeof(Page),
"defaultCss",
string.Empty
);
}
}
}
Run Code Online (Sandbox Code Playgroud)
您需要ScriptManager在包含自定义控件的页面中添加控件实例
<asp:ScriptManager runat="server" ID="sm"/>
Run Code Online (Sandbox Code Playgroud)
在ASPX页面中,您需要将该header部分标记为服务器控件
<head runat="server">
Run Code Online (Sandbox Code Playgroud)
以下代码:
link.Href = this.Page.ClientScript.GetWebResourceUrl(
typeof(YourControlType),
"AjaxEnabled.Web.UI.DefaultStyle.css");
Run Code Online (Sandbox Code Playgroud)
直接呈现链接到程序集中嵌入的CSS文件的链接
这个条件:
if (!this.Page.ClientScript.IsClientScriptBlockRegistered("defaultCss"))
...
this.Page.ClientScript.RegisterClientScriptBlock(
typeof(Page),
"defaultCss",
string.Empty
);
Run Code Online (Sandbox Code Playgroud)
确保CSS在页面中只呈现一次,即使您删除了多个控件实例也是如此
| 归档时间: |
|
| 查看次数: |
16199 次 |
| 最近记录: |