我是 MVC 3 的新手,遇到过以下场景:
首先让我解释一下我是如何设置我的应用程序的:
所有到服务器的回发都使用 jquery ajax,它从控制器返回一个视图,该视图附加或前置或替换目标 div。
场景:
我已经到了想上传图片的地步,但不幸的是,由于发布了 jquery ajax,我无法在 C# 中获取 html 的值Request.Files
。我知道有插件可以帮助解决这个问题,但我想自己做,所以我创建了一个<iframe>
,然后我使用一些 javascript 并将表单发布到 iframe(旧的经典做事方式):
function UploadImg(SACTION) {
alert(SACTION);
validatorform.action = SACTION;
validatorform.target = "fraImage";
validatorform.method = "POST";
validatorform.submit();
}
SACTION
参数看起来像这样@Url.Action("UploadFile", "Response")
。这一切都很好,因为它击中了控制器操作方法,然后我可以保存图像:
[HttpPost]
public ActionResult UploadFile(string ArticleID)
{
ViewBag.PreviewImage = cFileUploads.UploadFile(ArticleID, Request.Files[0]);
return View("ImagePreview");
}
我现在想将视图返回到 iframe(只是预览图像,然后做一些其他的事情,但这不是重点)
预览图像的视图:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action="">
<img alt="" src="@ViewBag.PreviewImage" />
</form>
</body>
</html>
问题:
不幸的是,当我在 C# 中返回视图(ImagePreview.cshtml)时,整个页面都被刷新了,我想要的只是刷新 iFrame。我应该如何从控制器返回视图?