ASP MVC SPA Ajax - 在控制器

时间:2017-02-21 06:59:32

标签: c# asp.net ajax asp.net-mvc post

Hello Stack Overflow社区, (这是我的第一篇文章)。

我有以下代码:

HomeController.cs

public class HomeController 
{
    public ActionResult Index()
    {
        return View()
    }

    [HttpPost]
    public ActionResult CalculateProblem(List<Location> Locations)
    {
        ///Dummy code
    }
}

_Home.cshtml

<script>
$.ajax({
    url: '@Html.Action("CalculateProblem","Home")'
    /* Further Dummy Stuff */
});
</script>

在运行时,加载_Home.cshtml时,遇到类似于以下内容的System.Web.HttpException:

  

“未找到公共操作方法”CalculateProblem“   控制器 .HomeController“

下划线表示命名空间。

如果删除[HttpPost]属性,一切正常。但这不是我想要的,因为我正在向IIS发送数据。

有人可以告诉我,我缺少什么吗?

最好的问候,安东。

2 个答案:

答案 0 :(得分:1)

@Html.Action("CalculateProblem","Home")会尝试在 HomeController 类中找到名为 CalculateProblem 的操作,其中包含 HttpGet 属性有 HttpPost ,另一个是Html.Action()将调用该操作,并将html返回视图进行渲染。

你需要的是Url.Action()这里使用控制器和动作名称生成url字符串,所以你要设置ajax调用的url

url: '@Url.Action("CalculateProblem","Home")'

答案 1 :(得分:0)

你能分享你在AJAX请求中设置的其他参数吗? 如果您将定义Type:POST,它将查找HTTPPOST并且您的方法应该有效。

由于