Ajax HTTPPost之后的MVC刷新部分视图

时间:2017-11-13 16:07:25

标签: jquery ajax asp.net-mvc asp.net-mvc-4

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

这是部分视图的控制器:

    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);
    }

这是包含partial:

的视图的代码
<div id="view-Bartolini">
   @{
      Html.RenderAction("BartoliniMagazzino", "Partial", new { m = item });
    }
</div>

这是按钮的代码:

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

这是点击此按钮的代码:

$(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函数有以下代码:

[HttpPost]
public ActionResult SaveBordero(FormCollection form)
{
   DataMagazzino dt = new DataMagazzino();
   // Do something
   return PartialView("BartoliniMagazzino", new { m = dt });
}

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

1 个答案:

答案 0 :(得分:0)

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

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

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

感谢所有