asp.net MVC路由- javascript url 404错误
asp.net MVC routing - javascript url 404 errors
在本地开发我的应用程序(asp.net mvc3)时,使用VS dev应用程序服务器一切都很好。该应用程序位于localhost/。但是,我试图将应用程序部署在/Management目录下的IIS 7.5服务器上,并且有很多路由问题,因为我的应用程序中的一些调用依赖于应用程序在路由上。
我有一些javascript代码,通过ajax调用我的控制器,看起来像这样:
url: "/en/Home/GetFormula/"
我希望它去:/Management/zh/Home/GetFormula,但它去了网站的根,寻找/zh/Home/GetFormula,并返回404错误。
关于如何修复我的javascript路由到默认/管理/作为网站的根的任何想法?
谢谢
当传递给HTTP请求的伪url以斜杠开头时(例如:"/path/to/resource"),伪url是"完成的",将其视为给定的路径位于网站的根目录下(例如:"http://my.site/path/to/directory")。
显然,您希望伪url被处理,就好像给定的路径位于Web应用程序的根目录下一样。好吧,我有个坏消息要告诉你:HTTP协议不处理像"Web应用程序"这样的事情。
ASP。. NET MVC框架提供了Url.Content
函数,它接受以波浪字符开头的伪url(例如,"~/path/to/resource"),并返回用Web应用程序的根目录(例如,"http://my")替换波浪字符的结果。site/an/application/path/to/resource",假设Web应用程序的根目录是"http:/my.site/an/application")。然而,ASP。. NET MVC框架只在服务器端可用。如果你的JavaScript运行在客户端,它不能调用Url.Content
。
但并不是所有的都失去了。ASP。. NET MVC框架允许你在服务器上动态生成JavaScript代码并在客户端上运行,同样的,它允许你动态生成HTML内容并将其发送到客户端。这样,您就可以在服务器端上将伪url扩展为实际的url ,并将生成的JavaScript代码部署到客户机。 为了避免对当前位置的混淆,请尝试: 我解决了这个问题,在我的页面上添加了一个html隐藏字段,在服务器端,我用url推断出正确的url。RouteUrl方法如下: 那么,在你的javascript代码中你可以这样做:url: document.URL + "/Management/Home/GetFormula"
<input id="MyHiddenFieldName" name="MyHiddenFieldName" type="hidden" value="@Url.RouteUrl(new { area = "MyArea", controller = "MyController", action = "MyAction" />
url: $("#MyHiddenFieldName).val()
- CKFinder 3为所选文件返回错误的URL
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- Ajax对web URL的调用导致javascript错误
- 类型错误:url未定义extjs 4正在填充组合框
- javascript window.location在检查firebug时给了我一个错误的url路径
- 使用EaselJS位图时捕获错误的URL
- 模版启动错误-类型错误(“参数”url'必须是字符串,而不是“+类型的url”)
- 不带“”的自定义URL;无法打开“;错误
- $http GET URL更改并查找错误的资源
- 如果URL's链接返回错误
- 未捕获的类型错误:$(..).modal不是具有远程url的函数
- 为什么即使两个 URL 都来自 XXXX.com,我仍然会收到 405 错误
- 会话过期URL错误
- 修复Javascript中常见的URL错误
- $.getJSON在Knockout.js中的URL错误
- XMLHttpRequest错误格式化URL-错误405
- 从远程url错误中获取主干集合
- 部署时自定义操作url错误:部署步骤中发生错误
- 未知的Ajax URL错误
- 当通过文件传输发送时,从相机发送的图像URL错误