私はasp.netmvcを初めて使用します。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
パラメータにToggleRecommend
リクエストからの値が入力されていないことです。代わりに、nullです。
リクエストはサーバーに正しく到達しています。content
メソッドの変数には値がmode=off
ありRequest.ContentLength
、期待どおりに8です。また、Request.RequestType
意図したとおり「POST」です。ただし、Request.Form
は空です。キーや値はありません。(それが適切かどうかはわかりません)。
ここで何が問題になっていますか?mode
パラメータの値を取得してアクションメソッドに入れるにはどうすればよいですか?
問題はpostに関係している必要があります。HttpPost
属性を削除してURLにリクエストを実行するとlocalhost:62718/microsite/toggleRecommend/?mode=off
、パラメーターは意図したとおりmode
の値を取得します。off
編集:
リクエストは、Mootoolsライブラリを使用してjavascriptで行われます。以下のコードのその部分を含めました:
var req = new Request.JSON({ method: "post",
url: "/microsite/toggleRecommend/" ,
autoCancel: true, urlEncoded: false, secure: false,
onFailure: recommendFail, onException: recommendFail,
onSuccess: recommendSuccess
});
req.send({ data: { mode: 'on'} });
firebugを使用すると、リクエストの正確な形式を確認できます(そして、それは問題ないように見えます)ので、JavaScriptコードの詳細が問題にならないことを願っています。