Javascript ASP.NET MVC路由和路径是js文件
我们现在面临一个问题。我们有一个相当大的页面,有一个Looong内联脚本,它完成了所有的工作。我们现在想要混淆它,并将其作为一个单独的.js文件使用。但问题是,我们有由Url助手(Url.Content())生成的路径。那么,不使用硬编码的路径字符串将js文件与页面分离的最佳方法是什么呢?您可以创建javascript函数来设置所需的路径,并从页面的一个小脚本部分调用它们 Javascript文件:Javascript ASP.NET MVC路由和路径是js文件,javascript,asp.net-mvc,url,path,Javascript,Asp.net Mvc,Url,Path,我们现在面临一个问题。我们有一个相当大的页面,有一个Looong内联脚本,它完成了所有的工作。我们现在想要混淆它,并将其作为一个单独的.js文件使用。但问题是,我们有由Url助手(Url.Content())生成的路径。那么,不使用硬编码的路径字符串将js文件与页面分离的最佳方法是什么呢?您可以创建javascript函数来设置所需的路径,并从页面的一个小脚本部分调用它们 Javascript文件: var resource1; var resource2; function setResou
var resource1;
var resource2;
function setResourcesReferences(resource1, resource2, ...) {
}
ASPX文件:
<script type="text/javascript">
setResourcesReferences(<% Url.Content("Resource1") %>, <% Url.Content("Resource2") %>, ...);
</script>
setResourcesReferences(,…);
我通常在单独的视图中编写javascript(仅使用js代码),并使用自己的操作结果来呈现它。通过这种方式,我可以利用服务器端的c#,如果需要,我可以使用模型,它将作为外部js文件包含在浏览器中(带有适当的缓存)。我使用的操作结果可在此处找到:
更新
您可以从您的操作中使用如下操作结果:
public ActionResult JsFile() {
ViewData.Model = //Create model if you want one;
return new JavascriptFileResult(true)
{
TempData = TempData,
ViewData = ViewData
};
}
然后将其视为普通视图(但仅在视图中编写javascript)。当然,您也可以使用任意数量的参数
您可以这样包含它:
<script type="text/javascript" src="<%=Url.Action("JsFile", "ControllerName")%>"></script>
这听起来是个不错的解决方案。但是在您发送的代码片段中,RegexReplace方法和JavaScriptCompressor类来自哪里?还有一个问题-我应该如何从我的操作中准确地使用JavascriptFileResult?@hiveticks,对不起,忘了提到这一点。它们都来自Yahoo.Yui.Compressor库,您可以在此处下载:。我将更新我的答案,向您展示如何使用操作结果。@HiveHicks,对我来说,效果非常好。如果您需要使用db中的值的动态css,也可以使用css执行同样的操作。+1 Mattias,我知道您“升级”这个已经有一段时间了。我只是想说,它真的很好用。自本初稿以来的任何意见/补充??我希望能够对其进行全面测试,并将其整合到一个生产应用程序中,有什么我应该知道的吗?Mattias,我还冒昧地用一个参数重载了JavascriptFileResult初始值设定项,以便为“视图”提供一个替代文件名。这意味着您可以使用字符串jsFilename参数调用jsFile操作,该参数调用相同名称的视图,而不是查找jsFile.as(pc)x。只是觉得你可能会感兴趣。我会发布我的更改,这样你当然可以知道我做了什么,我猜:)