【问题标题】:MVC Refresh Partial View after Ajax HTTPPostAjax HTTPPost 后 MVC 刷新部分视图
【发布时间】:2018-04-26 09:20:16
【问题描述】:

我正在尝试在 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);
    }

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

<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 函数中调用 return PartialView 时,ajax 调用总是进入错误部分。我不知道如何成功并更新部分视图

【问题讨论】:

  • 在您的 Ajax 调用中删除 dataType: 'json',。这代表您从服务器获得的内容,它不是 json 而是 html。
  • 您是否在服务器端代码中设置了断点?似乎在后端抛出了一个错误
  • 按照@derloopkat 的建议删除数据类型属性。 jquery 将使用响应标头猜测 dataType 并处理它。
  • 我尝试输入 dataType:'html' 或删除 dataType 但它不会改变结果
  • 这意味着您还有其他问题导致代码出错。您从网络呼叫中得到什么响应? 200可以吗?

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


【解决方案1】:

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

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

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

谢谢大家

【讨论】:

    猜你喜欢
    • 2013-04-07
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    相关资源
    最近更新 更多