[英]JQuery and Razor Controller View ActionResult
我有一个可以返回成功或错误页面的控制器,如下所示:
[HttpPost]
public ActionResult File_post(HttpPostedFileBase file)
{
if (...)
return View("Success");
else
return View("Error");
}
这些成功和错误页面仅包含基本文本,并显示在Shared / _Layout.cshtml中。
在我的js中,我想调用由return View定义的那些页面,但是我该怎么做呢?
我测试了: window.location.reload();
可以,但是只能重新加载实际的索引页面。
如果我尝试: window.location.href = data.url;
由于页面http:// xxx / xxx / File_post不存在而失败。
如果我这样做: $('#main').html(data);
该页面外观不错,但内容为空。
编辑:我正在使用jquery.fileupload所以我有:
<input id="fileupload" type="file" name="file" />
和
$('#fileupload').fileupload(
{
done: function (e, data) {
// Use the return View("Success")
},
fail: function (e, data) {
// Use the return View("Error")
}
});
在我的jqXHR.reponseText和data.result中,有很好的“ Success”或“ Error” html,因此我认为我需要用此填充页面,但是如何?
有任何想法吗 ? 非常感谢 !
我找到了怎么做。 正如我在版式中有一个<div id="main">
我可以使用data.result来用“成功”或“错误”消息填充页面。 所以我有 :
done: function (e, data) {
$('#main').html(data.result);
}
和
return PartialView("Success");
现在,该页面已正确显示。
您可以尝试使用此代码
$.ajax({
type: "POST",
url: Settings.YourUrl,
data: "{queryString:'" + searchVal + "'}",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (data) {
alert("here" + data.d.toString());
});
在您的视图中,您可以添加此代码
var Settings= {
YourUrl: '@Url.Action("Action","Controller")'
}
当前操作只能处理POST请求。 因此,您可以创建另一个操作以返回GET请求的视图。
例如
public ViewResult Success()
{
return View();
}
您可以将statusCode更改为500或所需的错误代码;
C#
[HttpPost]
public ActionResult File_post(HttpPostedFileBase file)
{
if (...)
{
return View("Success");
}
else
{
Response.StatusCode = 500;
Response.TrySkipIisCustomErrors = true;
return View("Error");
}
}
JS:
$('#fileupload').fileupload(
{
done: function (e, data) {
// Use the return View("Success")
},
fail: function (e, data) { // http status response != 200
// Use the return View("Error")
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.