我是ASP.NET MVC的新手。我想通过$.ajax
调用一个控制器的方法,该方法不是视图中的操作方法,但我在浏览器控制台中收到错误。我想问一下,通过ajax调用一个不是动作方法的方法是不可能的。
视图代码
@{
ViewBag.Title = "About Us";
}
<script type="text/javascript">
function ajaxcall() {
$.ajax({
url: '/Home/ValidatePin',
type: 'Post',
success: function (result) {
alert(result.d);
}
})
}
</script>
<h2>About</h2>
<p>
Put content here.
<input type="button" onclick="ajaxcall()" value="clickme" />
</p>
这是方法
的代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Services;
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
[WebMethod]
public static string ValidatePin()
{
return "returned from controller class";
}
}
}
答案 0 :(得分:0)
控制器的所有公共方法都是操作,除非标有NonAction
属性。
[WebMethod]
属性来自ASP.NET Web服务(非MVC),并且对MVC控制器没有影响。
您的ValidatePin
方法未被调用,因为它是静态的。动作方法必须是实例方法。