【发布时间】:2011-03-07 13:43:20
【问题描述】:
我已经成功创建了一个 mvc/razor Web 应用程序,它返回已被 razor 解析的 css 文件。每次有背景图像时,我都有一个 razor sn-p 将 URL 前缀写入图像文件名。 CSS 现在看起来像这样:
body { background-image: url(@LookupUrl.Image("background.gif")); }
Css 文件现在可以正常工作,我已经开始尝试让 javascript .js 文件以相同的方式运行,但这些文件并没有发挥作用。
该代码与 css 代码相同,并且成功找到了 .js 文件,但 razor 似乎对其进行了不同的解析。这是一个示例js文件:
function testFunction() { alert('test function hit!'); }
testFunction();
Razor 似乎认为它应该编译它的代码,并给出错误:
Compiler Error Message: JS1135: Variable 'alert' has not been declared
> Source Error:
>
> Line 1: function testFunction() {
> Line 2: alert('test function
> hit!'); Line 3: } Line 4:
> testFunction();
将同一文件重命名为 .css 后,它工作正常。
有没有办法让 razor 以与 .css 相同的方式处理 .js 文件?
以下是我为 razor 注册文件处理程序的方法:
RazorCodeLanguage.Languages.Add("js", new CSharpRazorCodeLanguage());
RazorCodeLanguage.Languages.Add("css", new CSharpRazorCodeLanguage());
WebPageHttpHandler.RegisterExtension(".js");
WebPageHttpHandler.RegisterExtension(".css");
构建提供程序通过 his blog post 中 Haacked 概述的方法在 PreApplicationStart 中注册。
我是否需要删除 mvc 为 .js 文件添加的处理程序?
更新 2 天
虽然我按照自己的意愿工作,但我不会向其他人推荐这种方法。在不使用
相反,我可能会回到用于动态 css/javascript 的 aspx 网络表单,其中 代码块自然出现的可能性较小。
【问题讨论】:
-
我已经能够在视图本身上使用
标签: asp.net asp.net-mvc-3 razor