1

是否可以在 asp.net mvc 3 中使用 ajax 查询发送模型对象?我尝试了这段代码,但它不起作用。

   $.get($(target).data('path')+'list/'+@ModelpagedList.ParentID+'?page='+page+'?searchObject='+@Model, function (data) {
            $(target+' .data-content').unblock();    


            window.setTimeout(function()
            {
                $(target).replaceWith(data);
            },200);

        });
        return false;

我要发送searchParam=@Model

4

2 回答 2

4

是否可以在 asp.net mvc 3 中使用 ajax 查询发送模型对象

当然,您可以将其发布为 JSON:

var url = $(target).data('path') + 'list/' + @ModelpagedList.ParentID;
var data = {
    page: page,
    searchObject: @Html.Raw(Json.Encode(Model))
};

$.ajax({
    url: url,
    type: 'POST',
    data: JSON.stringify(data),
    contentType: 'application/json',
    success: function(result) {
        $(target + ' .data-content').unblock();    
        window.setTimeout(function() {
            $(target).replaceWith(data);
        }, 200);
    }
});

您的控制器操作将如下所示:

[HttpPost]
public ActionResult SomeAction(int parentId, int page, MyViewModel searchObject)
{
    ...
}

但是恕我直言,所有这些努力都是不必要的。没有必要像那样浪费你的带宽。只需发送允许它从后端检索它的模型标识符 - 与您最初在呈现视图时检索它的方式相同:

[HttpPost]
public ActionResult SomeAction(int id, int parentId, int page)
{
    ...
}

现在您只能发送模型的 id,然后在您的控制器操作中使用 id 检索相应的模型对象。只值得从客户端向服务器发送可能已被用户修改的信息。这不是你的情况。你只是让这个模型无用地四处走动。

于 2013-09-03T10:54:34.993 回答
1

创建一个将对象转换为 json 的扩展方法

public static class JsonExtensions
{
    public static string ToJson(this Object obj)
    {
        return new JavaScriptSerializer().Serialize(obj);
    }
}

接着

   var model = <%= Model.ToJson() %>

$.get($(target).data('path')+'list/'+@ModelpagedList.ParentID+'?page='+page+'?searchObject='+model, function (data) {
            $(target+' .data-content').unblock();    


            window.setTimeout(function()
            {
                $(target).replaceWith(data);
            },200);

        });
        return false;
于 2013-09-03T10:47:20.227 回答