0

我一直在开发一个 MVC 4 应用程序,它还通过 Jquery 包含 Ajax。我遇到了一个问题。

例如,如果我单击一个按钮,onclick 事件会触发一个 javascript 方法。此方法位于 .js 文件中。

该 javascript 方法使用 Ajax 调用一个ActionResult接收一些参数(字符串、int)的函数,没什么特别的。所以..可以说我的操作结果在“ PersonController中,它的名字是“ Add”。所以我想添加一个人。

我的 ajax 调用中的 url 属性应该是"/Person/Add",我的数据应该是这样的:

var person = new Object();
person.name = "John";
person.id = 1;

data: person

这在使用 Visual Studio 运行应用程序时没有任何问题。但是当我在 IIS 中部署它时,我得到一个 404 错误。

我试过这个。我<link> <link id="PersonAddURL" href="Url.Content("~/Person/Add") />在布局中添加了一个,然后url: "/Person/Add"我没有使用,而是将其更改为url: $("#PersonAddURL").attr("href").

这行得通,现在,我认为这不是解决它的好方法。应该还有一个更好的。即使我设法解决了它,我还是希望有人向我解释发生这种情况的原因。我不喜欢为每个 URL 设置一个链接标签的想法。

感谢未来的答案。

4

1 回答 1

4

我通常做的是在我的 ASP.NET MVC 布局中有以下全局 javascript 变量:

<script>var webroot = "@Url.Content("~/")";</script>

然后从任何 JS 文件中,您可以执行以下操作:

$.post(webroot + "Person/Add", person, function(result){ ... });

只需确保在任何 AJAX 调用之前声明并初始化webroot变量。

如果您在 javascript 中使用命名空间,则可以将其更改为(假设应用命名空间):

<script>app.webroot = "@Url.Content("~/")";</script>

并去掉让开发者不舒服的全局变量。

于 2013-02-05T21:03:34.803 回答