如何在MVC中返回View到ajax请求?

时间:2015-02-15 10:16:07

标签: ajax asp.net-mvc asp.net-mvc-3 model-view-controller

如果我有一个简单的局部视图:

    @if (Model != null)
{
    if (Model.Count() != 0)
    {
        foreach (var item in Model)
        {
            <li class="list-group-item list-group-item-success">
                <div class="row">
                    <div class="col-lg-4">@item.FullName</div>
                    <div class="col-lg-4">@Resource.Price @item.SalesPrice</div>
                    <div class="col-lg-4"><div class="pull-right"><span class="glyphicon glyphicon-remove remove-glyph" aria-hidden="true"></span></div></div>
                </div>
            </li>
        }
    }
}

控制器代码:

[HttpPost]
public ActionResult ProductList(List<ProductViewModel> collection)
{

    return  PartialView("_ProductList", collection);
}

我的ajax请求:

$.ajax({
    url: actionUrl,
    contentType: "application/json; charset=utf-8",
    dataType: 'json, html',
    cache: false,
    data: JSON.stringify({ collection: temporarySelectedItems }),
    type: 'POST',
    traditional: true
}).done(function (data) {
    console.log(data)
});

我可以看到我的项目很好地序列化了,但是.done永远不会返回任何HTML。

1 个答案:

答案 0 :(得分:0)

ajax调用看起来很好。只需修改控制器即可返回json结果。

    [HttpPost()]
    public JsonResult ProductList(List<ProductViewModel> collection)
    {
        //Do something

        return Json(something);
    }

如果您还没有,也应该使用JSON.NET。它很好地消除了JSON的序列化/反序列化的痛苦。