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并键入 de 属性名称。像这样:

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

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

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

请记住,javascript 区分大小写,因此您需要像在 C# 中那样在 AddressID 中A使用大写字母。ID

在控制器中,您需要将最后一行替换为如下内容:

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

该方法必须是 return JsonResult。Json 方法将对象(在本例中为地址)序列化为 json 格式,然后将数据响应给客户端。

如果您需要 Json 方法接受 IEnumerables,例如 List<> 或 Array。在 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 回答