C# & ASP.NET MVC:使用 ajax 调用调用视图



我想在当前视图上调用一个ajax调用。下面是我的Ajax调用,它调用我的控制器的一个函数。

$.ajax({
type: 'POST',
url: '@Url.Action("EditCertificateObservation", "Frühwarnsystem")',
data: {
serverName: '@Model[0].ServerName',
name: event.data.name,
thumbprint: event.data.thumbprint,
expiringDateStr: event.data.expiringDate,
isChecked: document.getElementById(store + event.data.index).checked,
model: data,
},
});

这段代码是我的控制器函数,它返回一个视图来加载。

[HttpPost]
public ActionResult EditCertificateObservation(string serverName, string name, string thumbprint, string expiringDateStr, bool isChecked, string model)
{
var newModel = JsonConvert.DeserializeObject<List<Store>>(model);
var cert = new Certificate(serverName, name, thumbprint, expiringDateStr);
var server = new Server(serverName);
server.FetchIdByServerName();
if (isChecked)
{
cert.AddToObservation(server.Id);
}
else
{
cert.DeleteFromObservation();
}
return View("Index");
}

让您知道:我在视图上使用一个复选框调用ajax调用,该复选框是动态生成的。如果我调试控制器函数被调用并运行,但浏览器没有加载我返回的视图。

如果你需要更多的信息,就在这里问。

谢谢你的帮助

如果你想在Ajax请求之后打开一个视图,你只需要等待你的控制器的响应,那么你可以使用success,但你也可以使用failureerror取决于你的需要,所以你的Ajax将是这样的:

$.ajax({
type: 'POST',
url: '@Url.Action("EditCertificateObservation", "Frühwarnsystem")',
data: {
serverName: '@Model[0].ServerName',
name: event.data.name,
thumbprint: event.data.thumbprint,
expiringDateStr: event.data.expiringDate,
isChecked: document.getElementById(store + event.data.index).checked,
model: data,
},
success: function (response) { 
alert(response.message); 
window.location.href = "/Frühwarnsystem/Index";
// or with some parameter
window.location.href ="/Frühwarnsystem/Index?id=" + response.counter;
// or if you prefer with helper ...
window.location.href = '@Url.Action("Frühwarnsystem","Index")';

},
failure: function (response) { alert("failure"); },
error: function (response) { alert("error"); }
});

为了更有用,你的控制器可以发送一个Json响应例如,使用一些参数,如下所示:

[HttpPost]
public JsonResult EditCertificateObservation(string serverName, string name, string thumbprint, string expiringDateStr, bool isChecked, string model)
{
var newModel = JsonConvert.DeserializeObject<List<Store>>(model);
var cert = new Certificate(serverName, name, thumbprint, expiringDateStr);
var server = new Server(serverName);
server.FetchIdByServerName();
if (isChecked)
{
cert.AddToObservation(server.Id);
}
else
{
cert.DeleteFromObservation();
}
// Do some condition here to send an answer ...
string message = "";
int counter = 0;
var response = new { counter, message };
return Json(response);
}

您正在调用ajax POST HTTP请求。这意味着您可以下载调用的结果并将其赋值到javascript变量中。此结果不会在浏览器中显示为页面。请看$.post的例子。

最新更新