ASP.NET MVC4 Controller的ActionMethod用于ajax的正确途径

时间:2016-03-30 10:11:51

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

我有以下MVC4应用程序结构:

application structure
从Index.cshtml我正在尝试对位于我的HomeController.cs中的SomeActionMethod()进行ajax调用

Index.cshtml看起来像:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script src="Scripts/jquery-2.2.2.min.js"></script>
</head>
<body>
    <script>
    $.ajax({
        url: '@Url.Action("SomeActionMethod", "HomeController")',
        type: "POST",
        cache: false,
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            alert(data);
        },
        error: function () {
            alert("fail");
        }
    });
    </script>
</body>
</html>

HomeController.cs看起来像:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace SapRepLanciatoreCAS.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        //trying to invoke from ajax
        [HttpPost]
        public ActionResult SomeActionMethod()
        {
            return Json(new { foo = "bar", baz = "Blech" });
        }
    }
}

当我启动应用程序时出现此错误: enter image description here

路径或控制器有什么问题?

2 个答案:

答案 0 :(得分:5)

MVC将controller名称的第一部分考虑在内,即忽略Controller关键字(请参阅您的视图,称为Home)。因此,您的网址应该是 - 将HomeController更改为Home

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

答案 1 :(得分:0)

url:'@Url("Method Name","Controller Name")' 

希望这会帮助你。