0

我是 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";
        }
    }
}
4

1 回答 1

0

控制器的所有公共方法都是动作,除非用NonAction属性标记。

[WebMethod]属性来自 ASP.NET Web 服务(非 MVC),在 MVC 控制器中无效。

您的ValidatePin方法没有被调用,因为它是静态的。动作方法必须是实例方法。

于 2013-01-05T21:12:24.870 回答