相对于当前控制器的MVC Ajax动作

fea*_*net 1 asp.net-mvc jquery asp.net-mvc-routing relative-url

我正在尝试从母版页中的链接获取Ajax调用.

所以我想只指定相对于当前页面/控制器的动作.

 $.ajax({
      url: '/Save',
      type: "GET",
      // .. etc 
 });
Run Code Online (Sandbox Code Playgroud)

我想调用页面上任何控制器的"保存"操作.我认为这会直接起作用,但似乎没有.有优雅的解决方案吗?

arc*_*hil 7

如果你直接进入你的视野,你可以做到

 $.ajax({
      url: '@Url.Action("Save")',
      type: "GET",
      // .. etc 
 });
Run Code Online (Sandbox Code Playgroud)

如果没有,并且javascript在外部文件中,您可以将生成的url附加Url.Action到元素作为data-?html5属性.然后在执行ajax调用之前动态读取该属性值.

<input type="text" data-save-action-url="@Url.Action("Save")" />
Run Code Online (Sandbox Code Playgroud)

永远不应该在asp.net mvc中硬编码url.一直用Url.Action.它在生成URL时检查您的路由配置,并始终根据它返回正确的值.如果您对网址进行硬编码,则在更改路由配置时,您的应用程序可能会无法使用.而且您必须手动更改应用程序中的每个URL.