【问题标题】:Call Controller Method using Ajax request使用 Ajax 请求调用控制器方法
【发布时间】:2015-09-29 20:33:13
【问题描述】:

请您帮助使用ajax请求从控制器调用方法,下面是我的代码,但返回错误说找不到控制器的源。

这是我的ajax代码

 function GetServices() {
    var e = document.getElementById("catagories");
    var strUser = e.options[e.selectedIndex].value;
    var id = e.options[e.selectedIndex].id;

$.ajax({
    url: "~/VasController/ExecuteVas/",
    //url: '<%= Url.Action("GetServices", "Vas") %>',
    type: 'POST',
    contentType: 'application/json',
    data: {"id": id},
    success: function (result) {
        alert(result);
    }
});

}

这是我的控制器方法

 [WebMethod]
        public static string GetServices(string id)
        {
            return id;

        }

好心的建议,我还是 c# 和 MVC 的初学者

【问题讨论】:

  • 您询问的是MVC,但显示的是WebMethod 示例!此外,您的 uri 在 javascript 代码中不正确。
  • 如何更正javascript代码中的url?丢弃我正在使用 MVC 的 Web 方法
  • 这个&lt;%= Url.Action("GetServices", "Vas") %&gt;有什么问题?用[HttpGet] 标记方法GetServices()。应该这样做。
  • 这种方式返回错误消息,服务器响应状态为 400(错误请求)
  • 你的 uri 将是(使用纯 MVC 时),“/Controller/Action”(删除 ~)

标签: c# ajax asp.net-mvc-4 model-view-controller


【解决方案1】:

在你的控制器文件中

public class YourControllerNameController : Controller
{
   [HttpPost]
   public ActionResult Dosomething(int? id)
   {
    //your code
    return View();
   }
}

那么在你看来

$.post('@Url.Action("Dosomething","YourControllerName")', { id: id }, function (data) {

});

【讨论】:

    【解决方案2】:

    您必须执行以下操作: 1-用[HttpPost]标签装饰Action方法 2- 删除 Ajax URL 的“控制器”一词,它将是 'url: "~/Vas/ExecuteVas/" 3-如果1和2都不起作用,试试把Ajax URL不带~/

    【讨论】:

      猜你喜欢
      • 2013-12-09
      • 2018-10-22
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 2021-05-22
      相关资源
      最近更新 更多