我正在尝试从母版页中的链接获取Ajax调用。
所以我想只指定相对于当前页面/控制器的动作。
即
$.ajax({
url: '/Save',
type: "GET",
// .. etc
});
我想调用页面上任何控制器的“保存”操作。我认为这会直接起作用,但似乎没有。有优雅的解决方案吗?
答案 0 :(得分:7)
如果你直接进入你的观点,你可以做到
$.ajax({
url: '@Url.Action("Save")',
type: "GET",
// .. etc
});
如果没有,并且javascript在外部文件中,您可以将使用Url.Action
生成的网址附加到data-?
html5属性的元素。然后在执行ajax调用之前动态读取该属性值。
<input type="text" data-save-action-url="@Url.Action("Save")" />
你应该从不在asp.net mvc中硬编码网址。始终使用Url.Action
。它在生成URL时检查您的路由配置,并始终根据它返回正确的值。如果您对网址进行硬编码,则在更改路由配置时,您的应用程序可能会无法使用。而且您必须手动更改应用程序中的每个网址。