我们主要使用ASP.NET环境。现在我正在构建一个使用“模块”的应用程序,它只是一个UserControl,它的“Javascript”在控件中,并且是该控件样式表的链接元素。我想保持模块化,并希望此控件的样式独立于标记/ javascript。
所以我想知道这样做的首选方法是什么?显然,如果我不想要我所追求的“主题”功能,我可以在控件的顶部使用样式标签。现在我有一个链接元素,正如我所说,这是不正确的我不认为。
有没有人有任何首选方法,如果有,为什么和为什么?
我简单地考虑了ASP.NET主题,但我认为这些控件的想法有点不同。
它基本上是一个购物车系统。我不想深入了解这一切,但我们正在使用一个非常整洁的安全系统,我们不想使用预制购物车。我正在开发一组可以在页面上删除的控件,例如在SiteFinity(我们使用的CMS系统)或我们可能拥有的任何其他项目中。通常我会将这些编译成一个DLL,所以我们得到了可以从工具箱中拖放的ACTUAL控件,然后我可以使用内部的“通用”样式,并允许任何有人想要的添加样式,以及提供一些更高级的样式作为好。
这是我第一次做到这一点,或者真的是我们店里的任何人第一次做到这一点,所以当我走的时候,我有点想办法。我可能离基地很远,但希望我不是。
对,这个想法是有一个“主题”,它实际上只是一个CSS文件和一个jQuery模板。我让它们命名相同,并在usercontrol上有一个Theme属性来设置它。
当这些控件最终确定时,我可能会将javascript重构为代码隐藏中的RegisterScriptBlock,但是现在它们只是在控件本身的脚本标记中。
提示这个问题的是DebugBar for IE,给我警告链接元素不允许在div中。我不太在乎,但在考虑之后,我不知道如何在不这样做的情况下链接到css文件。我非常简单地考虑在主服务器上有一个'空'链接标记,然后在UserControl的Page_Load后面的代码中设置THAT,但这不太好
我可以使用@import,但我认为链接标签是首选,对吗?
发布于 2019-04-18 08:30:39
我认为你应该做的是使用Page.RegisterScriptBlock来注册你的脚本块。最好的情况是你不应该在你的ascx内部脚本块中内嵌它们。这并不总是可行,但从理论上讲,这是最好的方法。
理想情况下,您的样式也应与标记分开。您的控件可以包含类和ID,但您的样式取决于您的应用程序而不是您的控件。理论上,控件可以用在您可能需要不同样式的其他应用程序中。
发布于 2019-04-18 09:25:02
听起来你正在推动自己的主题引擎...为什么不使用ASP.NET主题?
如果您决定自己动手,这里有一些您可能感兴趣的CssFriendly项目代码。(我认为只要我引用代码就可以发布代码。).css文件被标记为嵌入式资源,下面的代码用于根据需要包含它们。
string filePath = page.ClientScript.GetWebResourceUrl(type, css);
// if filePath is not empty, embedded CSS exists -- register it
if (!String.IsNullOrEmpty(filePath))
{
if (!Helpers.HeadContainsLinkHref(page, filePath))
{
HtmlLink link = new HtmlLink();
link.Href = page.ResolveUrl(filePath);
link.Attributes["type"] = "text/css";
link.Attributes["rel"] = "stylesheet";
page.Header.Controls.Add(link);
}
}
https://stackoverflow.com/questions/-100001128
复制相似问题