当我创建一个区域时,我使用JQuery来调用动作创建动作保存到db并返回jsaon现在保存时我想要渲染到我的索引视图我该怎么做?我的代码是有可能的吗? 我试图用jquery调用动作索引,它对动作调用良好但不渲染到视图索引
[HttpPost]
public ActionResult Create(int? id,string nombre, int idDpto )
{
try
{
if (id != null)
{
Area c = (from x in db.Areas
where x.AreaId == id
select x).First();
c.NombreArea = nombre;
c.DepartamentoId = idDpto;
db.SaveChanges();
return Json(new { ok = true, message = "saved employee " });
}
Area e = new Area()
{
NombreArea = nombre,
DepartamentoId = idDpto
};
db.Areas.Add(e);
db.SaveChanges();
return Json(new { ok = true, message = "saved employee " });//+ emp.NameEmployee
}
catch (Exception ex)
{
return Json(new { ok = false, message = ex.Message });
}
}
function saveEmployee() {
var urlSave = '@Url.Action("Create")';
var iddpt = $("#cmbDept").val();
var name = $("#txtemp").val();
var idArea = $("#AreaId").val();
if (!name) {
window.alert('el nombre y el departamento son requeridos');
}
else {
if (! iddpt) {
window.alert('el departamento es requerido');
}
else {
$.ajax({
type: "POST",
url: urlSave,
data: { id: idArea, nombre: name, idDpto: iddpt },
success: function (returndata) {
if (returndata.ok) {
window.alert(' Guardado ');
}
else {
window.alert(' error : ' + returndata.message);
}
}
}
);
}
}
}
答案 0 :(得分:4)
这里的根本问题是JavaScript中的AJAX调用与常规Web请求之间的区别。从服务器的角度来看,没有太大的区别。这就是浏览器处理这些内容的方式。
您的Create
操作已设置为由您正在执行的AJAX调用使用。这一切都很好。但我认为Index
不是。那个人希望是一个常规请求。正如我所说,从服务器的角度来看,确实没有区别。所以,正如您所观察到的,对Index
的调用恰好发生了。它只是不在浏览器中“渲染”。
这里的术语有点混淆。您不希望“使用jQuery呈现视图”,您希望指示浏览器发出该请求。什么时候应该发生?我假设你希望这个重定向可能发生在你的AJAX调用中的success
之后?
如果您希望JavaScript重定向,那么您就是在正确的轨道上。只是采用不同的方法。 jQuery不以AJAX方式调用Index
视图(因为它不知道如何处理响应)。只需使用对redirect the user to another resource的JavaScript调用:
window.location.href = "http://yourserver/controller/action/etc";