如何将视图从控制器返回到iFrame

时间:2012-08-24 09:56:07

标签: asp.net-mvc-3 iframe

我是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。我该如何从控制器返回视图?

1 个答案:

答案 0 :(得分:0)

解决了这个问题,我有一些javascript正在替换iframe所在的div的内容......(在我的额头上拍了一下)。现在一切都很完美:)

这里只会提出这个问题..