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



我想从一个主页的链接得到一个Ajax调用。

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

 $.ajax({
      url: '/Save',
      type: "GET",
      // .. etc 
 });

我想调用为页面提供服务的控制器的"Save"动作。我以为这能马上奏效,但似乎行不通。是否有一个优雅的解决方案?

如果你把这个直接放到视图中,你可以做

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

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

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

你应该永远不要在asp.net mvc中硬编码url。始终使用Url.Action。它在生成url时检查你的路由配置,并总是根据它返回正确的值。如果您硬编码url,那么当您更改路由配置时,您的应用程序可能无法使用。而且你必须手动更改应用程序中的每个url。

相关内容

  • 没有找到相关文章