ASP.NET MVC 3中的RestFul操作方法

时间:2013-10-05 19:46:01

标签: c# asp.net-mvc web-services

我无法在操作方法中检索我的POST请求正文。

我使用fiddler发起帖子请求。

这是我正在使用的控制器。

public class EventController : Controller
{
    //
    // GET: /Event/

    public ActionResult Index()
    {
        return View();
    }


    [HttpPost]
    [ActionName("Event")]
    public String AddSurvey()
    {
        // ... logic to modify or create data item

        return "Ahmed" + Request["person"];
    }
}

这是我的global.asax的配置方式

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


        routes.MapRoute(null, "Event",
             new { controller = "Event", action = "Event" });

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );



    }

当我从fiddler发出POST请求时,我的方法断点调用。但是,当我观察Request [" person"]的值时,其中为空。

是global.asax中定义的路由吗?请帮忙

3 个答案:

答案 0 :(得分:0)

尝试将Index操作重命名为Event[ActionName("Event")]表示您的Get操作被称为Event

答案 1 :(得分:0)

当有人在常规ASP.NET MVC中查找RESTful方法时,确保他知道 WebAPI非常重要,这非常适合这种需要

  

ASP.NET Web API是一个可以轻松构建HTTP的框架   覆盖广泛客户的服务,包括浏览器和   移动设备。 ASP.NET Web API是一个理想的构建平台   .NET Framework上的RESTful应用程序。

答案 2 :(得分:0)

我不知道,怎么样。或为什么。但这很有效。

  [HttpPost]
    [ActionName("Event")]
    public String AddSurvey()
    {
        // ... logic to modify or create data item
        string body;
        using (StreamReader reader = new StreamReader(Request.InputStream))
        {
            body = reader.ReadToEnd();
            reader.Close();
        }


        return body;
    }