C# MVC3在提交后接收新模型数据
我无法更新视图模型 我的观点叫做:概述 我在视图的控制器中有:C# MVC3在提交后接收新模型数据,c#,asp.net-mvc-3,post,model,submit,C#,Asp.net Mvc 3,Post,Model,Submit,我无法更新视图模型 我的观点叫做:概述 我在视图的控制器中有: public ActionResult Overview() { var evo = new OverviewViewObject { MvcGridModel = new MvcGrid(), SingleExportData = new SingleExportData() }; return View(evo); } 那我就要存钱了 这些按钮称为: $.a
public ActionResult Overview()
{
var evo = new OverviewViewObject
{
MvcGridModel = new MvcGrid(),
SingleExportData = new SingleExportData()
};
return View(evo);
}
那我就要存钱了
这些按钮称为:
$.ajax({
url: saveUrl,
cache: false,
type: "post",
data: JSON.stringify({ Name: myName }),
contentType: "application/json",
success: function (data) { .. }...
保存URL将转到:
[HttpPost]
public ActionResult Save(MyDataType saveData)
{
//todo save logic here
var mvcGridModel = GetGridData();
var evo = new ExportDataOverviewViewObject
{
MvcGridModel = mvcGridModel ?? new MvcGrid(),
SaveData = new MyDataType()
};
return View("Overview", evo);
}
它在Save中运行良好,在saveData对象中获得良好的数据,直到最后它才返回任何错误,但是当返回后显示视图时,数据不再显示在那里
你能帮帮我吗?说几句话:
- 如果保存按钮是表单提交按钮或锚定按钮,请确保在$.ajax调用后从回调返回false,以确保不执行默认操作
- 在控制器操作中,您返回的是完整视图(
),而不是部分视图,这对于使用AJAX调用的控制器操作更为常见returnview()
$('#saveButton').click(function() {
$.ajax({
url: saveUrl,
cache: false,
type: 'POST',
data: JSON.stringify({ Name: myName }),
contentType: 'application/json',
success: function (data) {
// do something with the data => refresh some
// portion of your DOM
$('#someDivId').html(data);
}
});
return false;
});
以及控制器的操作:
[HttpPost]
public ActionResult Save(MyDataType saveData)
{
//todo save logic here
var mvcGridModel = GetGridData();
var evo = new ExportDataOverviewViewObject
{
MvcGridModel = mvcGridModel ?? new MvcGrid(),
SaveData = new MyDataType()
};
return PartialView("Overview", evo);
}
不知道问题出在哪里。浏览器是否重定向到新视图?预期的结果是什么?为什么要从AJAX调用的控制器操作返回完整视图而不是PartialView?它应该转到调用该操作的同一视图。很好。但是在那里我想显示新的数据,并且eventhough我用View(“Overview”,evo)传递它。对象不会用新数据刷新。部分是HTML的一部分,而不是整个HTML页面。从ASP.NET MVC的角度来看,这意味着您将返回一个
PartialView
,而不是视图
。这意味着将不再应用布局。从客户端的角度来看,您应该使用这个部分刷新DOM的某些部分。这应该在success
AJAX回调中使用.html()
函数来完成。在我在回答中提供的示例中,我假设您希望使用控制器操作返回的部分HTML刷新某个元素id=“someDivId”
。似乎我没有确切地询问我需要什么,但您以完美的方式回答了我的问题,因此我将其设置为已回答。非常感谢你!好建议!