1

私は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コードの詳細が問題にならないことを願っています。

4

1 に答える 1

1

ajax呼び出しのコンテンツ/タイプはtext/htmlです。コントローラーに、application / json情報を送信していることを指定する必要があります。指定しないと、情報を受信しますが、パラメーターに配布する方法がわかりません。

于 2012-10-04T06:27:51.267 に答える