将Page方法添加到ASP MVC项目的正确方法?

时间:2012-04-11 23:12:17

标签: asp.net asp.net-mvc pagemethods webmethod

我刚刚开始使用ASP.NET和MVC模型。我已经解决了基本概念,并且有一些模型,控制器和视图正常工作。我知道如何将Web方法和页面方法添加到Web服务,但无法弄清楚MVC项目。

我(想)我需要在我的项目中添加一个Page方法作为响应AJAX请求的正确方法。这就是我的控制器的样子:

namespace MyProject
{
    public class OrderController : Controller
    {
        public ActionResult Place (ProductSku sku)
        {           
            var order = Order.NewOrder(sku);
            var db = new SystemDiscsLib.Database();
            db.SaveOrder(order);

            return View(order);
        }

        [WebMethod]
        public static string GetDate ()
        {
            return DateTime.Now.ToString();
        }

发布到/Order/Place工作正常,创建的视图显示Views/Order/Place.aspx的内容,每个人都很高兴。但是,对/Order/GetDate发出的任何请求都会因The resource cannot be found错误而失败。我(想)我已经正确地启用了页面方法,将其添加到Web.config下的system.web

    <httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>

我没有名为GetDate的视图,因为我不想要视图,我只是返回JSON数据。我打算使用JQuery,所以我没有执行EnablePageMethodsScripManager内容,per this article

1 个答案:

答案 0 :(得分:4)

PageMethods适用于WebForms,而不适用于MVC。将您的方法更改为更像这样:

public JsonResult GetDate()
{
  return Json(DateTime.Now.ToString());
}

请注意,该方法不再是静态的,您不应使用[WebMethod]属性。