我是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
的值为content
,mode=off
的值为8。此外,Request.ContentLength
是“POST”,按预期。但是,Request.RequestType
为空:它没有键或值。 (我不知道这是否相关)。
这里出了什么问题?如何获取Request.Form
参数的值以进入我的操作方法?
问题必须与发布有关:如果我删除mode
属性并向网址HttpPost
发出请求,则localhost:62718/microsite/toggleRecommend/?mode=off
参数的值为mode
是打算。
编辑:
使用Mootools库使用javascript进行请求。我在下面的代码中包含了这部分代码:
off
使用firebug,我可以看到请求的确切格式(看起来很好),所以希望javascript代码的细节无关紧要。
答案 0 :(得分:1)
您的ajax调用内容/类型是text / html,您需要向控制器指定您正在发送application / json信息,否则他会收到该信息,但不知道如何将其分发给它的参数