将post参数传递给asp.net mvc中的action方法?

时间:2012-10-03 15:52:37

标签: c# asp.net-mvc http

我是asp.net mvc的新手。我在Action方法中获取参数值时遇到了一些麻烦。

我有以下代码:

[HttpPost]
public ActionResult ToggleRecommend(string mode)
{
    byte[] requestContent = new byte[Request.ContentLength];
    Request.InputStream.Read(requestContent, 0, Request.ContentLength);
    string content = Encoding.ASCII.GetString(requestContent);

    return EmptyResult();
}

我使用Ajax请求访问此方法。该请求包含以下标题:

Accept  application/json
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Connection  keep-alive
Content-Length  8
Content-Type    text/plain; charset=UTF-8
Host    localhost:62718
Referer http://localhost:62718/microsite
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
X-Request   JSON
X-Requested-With    XMLHttpRequest

和这个身体:

mode=off

我的问题是mode的{​​{1}}参数没有填充请求中的值 - 而是为空。

请求正确到达我的服务器:方法中的变量ToggleRecommend的值为contentmode=off的值为8。此外,Request.ContentLength是“POST”,按预期。但是,Request.RequestType为空:它没有键或值。 (我不知道这是否相关)。

这里出了什么问题?如何获取Request.Form参数的值以进入我的操作方法?

问题必须与发布有关:如果我删除mode属性并向网址HttpPost发出请求,则localhost:62718/microsite/toggleRecommend/?mode=off参数的值为mode是打算。

编辑:

使用Mootools库使用javascript进行请求。我在下面的代码中包含了这部分代码:

off

使用firebug,我可以看到请求的确切格式(看起来很好),所以希望javascript代码的细节无关紧要。

1 个答案:

答案 0 :(得分:1)

您的ajax调用内容/类型是text / html,您需要向控制器指定您正在发送application / json信息,否则他会收到该信息,但不知道如何将其分发给它的参数