我有以下MVC4应用程序结构:
从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" });
}
}
}
路径或控制器有什么问题?
答案 0 :(得分:5)
MVC将controller
名称的第一部分考虑在内,即忽略Controller
关键字(请参阅您的视图,称为Home
)。因此,您的网址应该是 - 将HomeController
更改为Home
:
url: '@Url.Action("SomeActionMethod", "Home")',
答案 1 :(得分:0)
url:'@Url("Method Name","Controller Name")'
希望这会帮助你。