0

MVC3を使用しています。私は`を持っています

function userLocation_change()
 {
    var text = $("#userLocation").val();
    alert(text);
    var url = '@Url.Action("GetAllLocations", "Home")';
    var data = text;
    $.post(url, data, function (result) {


        });
}

`

これが私のコントローラーアクションです:

public JsonResult GetAllLocations(string userlocation)
    {
        ///...some code...
        return Json(..Something.., JsonRequestBehavior.AllowGet);
    }

問題は、コントローラー関数が呼び出されるたびに、"userlocation"パラメーターに NULL 値があることです。data値がコントローラーアクションに渡されるようにします。誰かがなぜこれが起こるのか教えてもらえますか? どんな更新でも大歓迎です。ありがとう。

4

3 に答える 3

0

特に、 Url.Action@Url.Actionのこのオーバーロードメソッドを介してパラメータを渡す必要があります。でRouteValueDictionaryインラインコンストラクターを使用してインスタンス化できます。


編集:実行時にそのリンクを設定する必要があることを認識してください。ただし、このUrl.Actionメソッドはレンダリング時にリンクを生成します。これをクエリ文字列に追加してから、コントローラーメソッドのクエリ文字列から読み取ることをお勧めします。もっとエレガントな方法があるのではないかと思いますが、これでうまくいくことはわかっています。

何かのようなもの:var url = '@Url.Action("GetAllLocations", "Home")?userlocation=' + $("#userLocation").val();

于 2012-11-07T04:13:24.273 に答える
0

アクションには という名前の文字列入力パラメーターがuserlocationあるため、データをアクションに送信するときに、以下のコードのようにこれを指定する必要があります。

ここで私は使用していますdata: { userlocation: text},

function userLocation_change()
 {
    var text = $("#userLocation").val();
    var url = '@Url.Action("GetAllLocations", "Home")';

    $.ajax({
    url: url,
    type: 'POST',
    data: { userlocation: text},     
    success: function (result) {

    }
    });
}

これでnullの問題が解決することを願っています。

于 2012-11-07T05:21:11.007 に答える
0

jQuery 事後関数呼び出しを次のように変更します。

$.post(  
    url,  
    { userlocation: text },  
    function(result){
       ....
}); 

これは、JavaScript リテラルを使用してコントローラーのアクション メソッドにデータを送信する必要があるためです。ここで、JavaScript を使用してコントローラーのアクションを呼び出すさまざまな方法の完全なリストを表示できます: http://www.asp.net/ajaxlibrary/jquery_posting_to.ashx

于 2012-11-07T04:27:17.710 に答える