默认的ASP.NET主题

Cur*_*urt 6 asp.net themes default app-globalresources

是否可以为ASP.NET网站创建默认主题?

例如,如果我有一个名为"Default"的主题,"NewTheme"并且我选择了一个名为的主题,并且我引用了一个"NewTheme""Default"主题中不存在但在主题中存在的文件,如:

<asp:image id="img" runat="server" ImageUrl="~/Images/image.jpg" />
Run Code Online (Sandbox Code Playgroud)

"/App_Themes/Default/Images/image.jpg"如果它不存在,那么可以采取"/App_Themes/NewTheme/Images/image.jpg"吗?

此外,如果"NewTheme"中不存在CSS类,但它在"默认"中存在,则可以采用"默认"吗?事实上,我认为如果它首先采用所有默认样式会更好,然后覆盖任何"NewTheme"发生冲突的情况.

我知道全局引用的工作方式与此类似,因为如果我选择了"es"本地化,并且webreference.resx.es文件中不存在密钥但它确实存在webreference.resx,那么它将从那里获取值.

我认为这将是ASP.NET主题的重要功能,因为我可以想象不同的主题只更改了某些图像,并且某些样式发生了变化.我无法想象每个主题的每个图像和每种风格总是完全不同.因此,如果没有这个功能,它将成为复制样式/图像的情况,我不喜欢它(因为显而易见的原因!).

Mic*_*Liu 1

此功能未内置于 ASP.NET 中。不过,您可以相当容易地实现它:

  1. HttpApplication.BeginRequest在 Global.asax 或自定义 HTTP 模块中挂钩事件。
  2. 在“/App_Themes/NewTheme/”下查找 URL 的请求。
  3. 检查at文件是否HttpRequest.PhysicalPath存在。
  4. 如果该文件不存在,则调用HttpContext.RewritePath请求 URL 中的“NewTheme”并将其替换为“Default”。