Nic*_*ago 0 iis asp.net-mvc jquery asp.net-mvc-routing
我一直在开发一个 MVC 4 应用程序,其中还包括通过 Jquery 的 Ajax。我遇到了一个问题。
例如,如果我单击一个按钮,onclick 事件将触发一个 javascript 方法。此方法位于 .js 文件中。
该 javascript 方法使用 Ajax 来调用ActionResult接收一些参数(字符串、整数)的方法,没什么特别的。所以..假设我的操作结果在“ Person”中Controller,它的名称是“ Add”。所以我想添加一个人。
我的 ajax 调用中的 url 属性应该是"/Person/Add",我的数据应该是这样的:
var person = new Object();
person.name = "John";
person.id = 1;
data: person
Run Code Online (Sandbox Code Playgroud)
当使用 Visual Studio 运行应用程序时,这不会出现任何问题。但是当我将它部署到 IIS 中时,我收到 404 错误。
我已经尝试过这个。我<link> <link id="PersonAddURL" href="Url.Content("~/Person/Add") />在布局中添加了 a ,然后没有使用而是url: "/Person/Add"将其更改为url: $("#PersonAddURL").attr("href")。
现在,这可行,我认为这不是解决它的好方法。应该还有另外一个更好的。即使我设法解决了这个问题,我仍然希望有人向我解释发生这种情况的原因。我不喜欢每个网址都有一个链接标签的想法。
感谢未来的答案。
我通常做的是在 ASP.NET MVC 布局中添加以下全局 javascript 变量:
<script>var webroot = "@Url.Content("~/")";</script>
Run Code Online (Sandbox Code Playgroud)
然后从任何 JS 文件中您可以执行以下操作:
$.post(webroot + "Person/Add", person, function(result){ ... });
Run Code Online (Sandbox Code Playgroud)
只需确保在任何 AJAX 调用之前声明并初始化webroot变量即可。
如果您在 JavaScript 中使用命名空间,那么您可以将其更改为(假设应用程序命名空间):
<script>app.webroot = "@Url.Content("~/")";</script>
Run Code Online (Sandbox Code Playgroud)
并删除让开发人员感到不舒服的全局变量。
| 归档时间: |
|
| 查看次数: |
2230 次 |
| 最近记录: |