关于jquery:Ajax HTTPPost之后的MVC刷新部分视图

MVC Refresh Partial View after Ajax HTTPPost

我尝试在Ajax HttpPost之后更新部分视图。

这是部分视图的控制器:

1
2
3
4
5
6
7
8
9
10
    public PartialViewResult BrtMagazzino(DataMagazzino m)
    {
        if (Session["Data"] != null)
        {
            DateToView dt = (DateToView)Session["Data"];
            ViewBag.comm = dt.commSelected.COMMITTENTE;
            ViewBag.corriere ="Bartolini";
        }
        return PartialView(m);
    }

这是包含部分视图的代码:

1
2
3
   @{
      Html.RenderAction("BartoliniMagazzino","Partial", new { m = item });
    }

这是按钮的代码:

1
<input class='btn btn-info btnBordero' type='button' value='Salva Borderò' data-corriere="@ViewBag.corriere" data-magazzino="@Model.NomeMagazzino" data-committente="@ViewBag.comm" />

这是单击此按钮的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$(function () {
    $('.btnBordero').on('click', function (event) {
        event.preventDefault();
        _self = $(this);
        var uf = new FormData();
        uf.append('corriere', _self.data('corriere'));
        uf.append('magazzino', _self.data('magazzino'));
        uf.append('committente', _self.data('committente'));
        var url ="/Partial/SaveBordero";
        $.ajax({
            type:"POST",
            url: url,
            contentType: false,
            processData: false,
            data: uf,
            error: function (ts) { alert(ts.responseText)
            },
            success: function (result) {
                $("#view-Bartolini").html(result);
            }
        });
    });
});

SaveBordero函数有以下代码:

1
2
3
4
5
6
7
[HttpPost]
public ActionResult SaveBordero(FormCollection form)
{
   DataMagazzino dt = new DataMagazzino();
   // Do something
   return PartialView("BartoliniMagazzino", new { m = dt });
}

一切正常,但是当我在SaveBordero函数中调用返回的PartialView时,ajax调用总是进入错误部分。 我不知道如何成功并更新局部视图


问题出在这一行:return PartialView("BartoliniMagazzino", new { m = dt });

如果我调用一个新的模型,这是一个匿名类型,系统不会重新调整它。

我只是写了解决它:return PartialView("BartoliniMagazzino", dt);

谢谢大家