【发布时间】:2011-02-26 19:15:45
【问题描述】:
我们现在面临一个问题。我们有一个相当大的页面,其中包含一个 loooong 内联脚本,它完成了所有工作。我们现在想要对其进行混淆并将其用作单独的 .js 文件。但问题是我们有由 Url 助手 (Url.Content()) 生成的路径。那么从页面中分离js文件而不使用硬编码的路径字符串的最佳方法是什么?
【问题讨论】:
标签: javascript asp.net-mvc url path
我们现在面临一个问题。我们有一个相当大的页面,其中包含一个 loooong 内联脚本,它完成了所有工作。我们现在想要对其进行混淆并将其用作单独的 .js 文件。但问题是我们有由 Url 助手 (Url.Content()) 生成的路径。那么从页面中分离js文件而不使用硬编码的路径字符串的最佳方法是什么?
【问题讨论】:
标签: javascript asp.net-mvc url path
您可以创建 javascript 函数来设置所需的路径并从页面的一个小脚本部分调用它们。
Javascript 文件:
var resource1;
var resource2;
function setResourcesReferences(resource1, resource2, ...) {
}
ASPX 文件:
<script type="text/javascript">
setResourcesReferences(<% Url.Content("Resource1") %>, <% Url.Content("Resource2") %>, ...);
</script>
【讨论】:
我通常在单独的视图中编写我的 javascript(只有 js 代码)并使用我自己的操作结果来呈现它。这样,我可以在服务器端利用 c#,如果需要,我可以使用模型,它将作为外部 js 文件包含在浏览器中(具有适当的缓存)。我使用的动作结果可以在这里找到:http://codepaste.net/p2s3po
更新
您可以从您的操作中使用这样的操作结果:
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>
【讨论】: