我尝试在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);
}
这是包含部分视图的代码:
@{
Html.RenderAction("BartoliniMagazzino","Partial", new { m = item });
}
这是按钮的代码:
这是单击此按钮的代码:
$(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调用总是进入错误部分。 我不知道如何成功并更新局部视图
在您的Ajax调用中删除dataType: 'json',。这代表你从服务器得到的东西,它不是json而是html。
你在服务器端代码中设置了一个断点吗?好像在后端抛出了一个错误
删除@derloopkat建议的数据类型属性。 jquery将使用响应头猜测dataType并处理它。
我尝试将dataType:'html'或删除dataType但它不会更改结果
我在返回的最后一次返回时放了一个断点,一切正常但是当ajax返回时它总是进入错误状态
这意味着您还有一些其他问题导致代码被抛出错误。您从网络电话中得到了什么回应?可以200好吗?
错误的文本是"对象引用未设置为对象的实例"但我无法理解在哪里
有些东西缺失了,有些东西应该省略。例如,删除contentType:false。此外,您可能会遇到缓存调用的问题,因此很难获得更新的错误结果。所以,添加以下行:$ .ajaxSetup({cache:false});在$ .ajax({"line。以及cache,false,在ajax调用中;你真的应该只需要1或者另一个。另外,请确保你的站点没有设置为应用程序URL:" localhost / mysite / controller / action"。这将导致您没有点击您尝试访问的控制器方法。
问题出在这一行:return PartialView("BartoliniMagazzino", new { m = dt });
如果我调用一个新的模型,这是一个匿名类型,系统不会重新调整它。
我只是写了解决它:return PartialView("BartoliniMagazzino", dt);
谢谢大家