从另一个局部视图更新局部视图

时间:2015-09-04 14:47:43

标签: asp.net-mvc-5 multi-select

我有两个部分视图,一个是多选类别列表,另一个是所选类别的所有产品,也是多选列表。

我想更新所选类别或按钮点击的第二个局部视图。我无法找到这样的例子,所以如果有人知道如何做到这一点就会很棒

1 个答案:

答案 0 :(得分:1)

在客户端,您可以使用ajax调用,在第一个局部视图中使用有关所选类别的参数。然后,服务器端的调用将返回使用正确的产品呈现的第二个局部视图,该视图基于已发送的类别参数。

ajax调用示例(使用jQuery):

function GetProducts(categoryID) {
    $.ajax({
        url: '/Controller/GetProducts',
        type: 'POST',
        data: JSON.stringify({ categoryID: categoryID }),
        dataType: 'html',
        contentType: 'application/json',
        success: function (data) { OnGetProductsPartialViewCallback(data); },
        error: function (jqXHR, textStatus, errorThrown) { OnGetProductsPartialViewError(jqXHR, textStatus, errorThrown); }
    });
}

function OnGetProductsPartialViewCallback(data) {
  $('#div-products').html(data);
  ...
}

function OnGetProductsPartialViewError(jqXHR, textStatus, errorThrown) {
  ...
}

服务器端代码:

[HttpPost]
public PartialViewResult GetProducts(int categoryID)
{
    try
    {
        var products = // get products
        return PartialView("Products", new ProductsViewModel(products));
    }
    catch (Exception ex)
    {
        throw new Exception("Products could not be loaded.", ex);
    }
}

希望这能指出你正确的方向;)