0

これが私の問題です。コントローラーからオブジェクトを取得するために ajax リクエストを作成しています。オブジェクト (または何か) が戻されていますが、戻されているそのオブジェクトの属性にアクセスする方法がわかりません。オブジェクトのタイプは「住所」であるため、Address.Address1、Address.City などの属性があります。コードは次のとおりです。ボタンがクリックされた後、

function showEditAddress(addressid) {

    $.get("/Website/Accommodation/AddressGet",
        { guid: addressid.toString() },

        function(data) {

             //Get values from variable 'data' such as described above
             //and append to form 'dialog'

            $("#dialog").dialog({
                // autoOpen: false,
                show: {
                    effect: "explode",
                    duration: 250
                },
                hide: {
                    effect: "explode",
                    duration: 250
                },
                buttons: {
                    "Save": {
                        text: "Save",
                        class: "",
                        click: function () {
                             //save form 
                            $(this).dialog("close");

                        }
                    },
                    "Cancel": {
                        text: "Cancel",
                        class: "",
                        click: function () {
                            $(this).dialog("close");
                        }
                    }
                },
                modal: true
            });
        });       
    }

コントローラーのアクション:

        public Address AddressGet(string guid)
    {
        Guid g = new Guid(guid);
        return _iCoreRepository.Addresses.Where(p => p.AddressID == g).SingleOrDefault();
    }

どんな助けでも大歓迎です!!! ありがとうございました!!!

4

2 に答える 2

2

ホセは非常に単純です。あなたはすでに質問に答えています。プロパティの値を取得するには、プロパティ名Addressの前にドットを入力して入力するだけですdata。このような:

//(....)
function(data) {

    //Get values from variable 'data' such as described above
    //and append to form 'dialog'

    //show address id.
    alert(data.AddressID);

JavaScript では大文字と小文字が区別されるため、C# の場合AID同様に AddressID に大文字を使用する必要があります。

コントローラーでは、最後の行を次のように置き換える必要があります。

var address = _iCoreRepository.Addresses.Where(p => p.AddressID == g).SingleOrDefault();
return Json(address, JsonRequestBehavior.AllowGet);

メソッドは return でなければなりませんJsonResult。メソッド Json は、データをクライアントに応答する前に、オブジェクト (この場合はアドレス) を json 形式でシリアル化します。

Json メソッドが必要な場合は、List<> や Array などの IEnumerables を受け入れます。JavaScript では、データ オブジェクトは長さのプロパティになり、次のようなインデクサーを使用して各要素にアクセスします。

data[0].AddressID.
于 2013-05-09T20:32:41.560 に答える
1

Addressオブジェクトだけを返す代わりに、 JsonResult.

public ActionResult AddressGet(string guid)
{
    Guid g = new Guid(guid);
    var address = _iCoreRepository.Addresses.Where(p => p.AddressID == g).SingleOrDefault();
    return Json(address, JsonRequestBehavior.AllowGet);
}

次に、jquery でdataアドレス オブジェクトが返され、C# クラスに表示されるフィールドにアクセスできます。

function showEditAddress(addressid) {

    $.get("/Website/Accommodation/AddressGet",
        { guid: addressid.toString() },

        function(data) {

            //Get values from variable 'data' such as described above
            //and append to form 'dialog'
            //Access it like: data.Address1, data.City etc...

        });       
    }
}
于 2013-05-09T20:33:24.063 に答える