我是MVC 3的新手,并且遇到了以下情况:
首先让我解释一下我如何设置应用程序:
所有回发到服务器的邮件都使用jquery ajax,它返回一个来自控制器的视图,该视图可以追加或替换目标div。
情景:
我已经到了想要上传图片的地步但不幸的是由于jquery ajax发布我无法获得C#Request.Files
中的html值。我知道有插件可以帮助解决这个问题,但是我想自己这样做,所以我创建了一个<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#中返回View(ImagePreview.cshtml)时,整个页面都会刷新,我想要的只是刷新iFrame。我该如何从控制器返回视图?
答案 0 :(得分:0)
解决了这个问题,我有一些javascript正在替换iframe所在的div的内容......(在我的额头上拍了一下)。现在一切都很完美:)
这里只会提出这个问题..