在我当前使用asp.net MVC 3(使用razor)的项目中,当我进行Ajax调用时,我必须将JS保留在视图页面上,因为我想使用Url.Action来生成URL.这意味着我无法将js代码拆分为.JS文件,是否有比我目前正在做的更好的解决方案.
可能重复:
java脚本中的Url帮助器
Url.Content(...)asp.net mvc helper方法返回等效的绝对URL.我在jquery或javascript中搜索一个像这样工作的方法...
因为,我想将javascript代码分成文件(.js),你知道该文件不支持javscript代码中的Url.Content(...)....
url(...)jquery方法不像Url.Content()
更新日期:2011年1月22日
嗨伙计们,我有一个解决方法:
在.cshtml文件中,我创建了一个' GetPath '函数,它返回包含域名的绝对路径,并且可以在任何.js文件中访问.在任何ASP.NET MVC视图(.cshtml或.aspx或.vbhtml)中包含以下代码:
<script type="text/javascript">
var fullPath = '@HttpContext.Current.Request.Url.Scheme://@HttpContext.Current.Request.Url.Authority';
function GetPath(url) {
return fullPath + url;
}
</script>
<script src="@Url.Content("~/JavaScriptFile.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
以及任何javascript文件中的代码.
$(function () {
alert(GetPath('/Content/Site.css'));
});
Run Code Online (Sandbox Code Playgroud)
结果是:http://www.yourDomain.com/Content/Site.css 或localhost:1234/Content/Site.css >> Visual Cassini服务器
你只需要更换@Url.Content("")与GetPath('')任何.js文件...
http://muaz-khan.blogspot.com/2012/02/absolute-or-relative-url-issues-and.html
我有一个ASP.NET MVC 4视图,它<div>通过JQuery AJAX调用动态地将两个嵌套的部分加载到元素中.每个部分都有一大堆自己的Javascript.为了让它全部正常工作,我目前拥有success每个AJAX调用中的所有Javascript :
function LoadPartial(someImportantId) {
$.ajax({
url: '@Url.Action("LoadThePartial")' + '?id=' + someImportantId,
type: 'POST',
async: false,
success: function (result) {
$("#partialContainerDiv").html(result);
//here there be great piles of javascript
}
});
}
Run Code Online (Sandbox Code Playgroud)
由于这些部分中有两个,每个需要数百行Javascript,因此主视图文件变得难以管理.我很乐意把所有这些脚本代码放到一个单独的.js文件中,但我仍然对Javascript很新,我非常依赖Chrome的脚本调试工具,而且我很难搞清楚如何(以及如果)我可以加载此脚本文件.我试过了:


有没有办法我可以为AJAX加载的部分单独的Javascript文件,仍然能够调试客户端上的部分?更重要的是,我在哪里将所有这些Javascript用于AJAX加载的部分视图?
我们现在面临一个问题.我们有一个非常大的页面,带有一个loooong内联脚本,可以完成所有工作.我们现在想要对其进行模糊处理并将其用作单独的.js文件.但问题是我们有由Url helper(Url.Content())生成的路径.那么将js文件与页面分开而不使用硬编码路径字符串的最佳方法是什么?