私はMVC 3が初めてで、次のシナリオに出くわしました:
最初に、アプリケーションをどのようにセットアップしたかを説明しましょう。
サーバーへのすべてのポストバックは、対象の div を追加または先頭に追加または置換するコントローラーからのビューを返す jquery ajax を使用します。
シナリオ:
画像をアップロードしたいところまで来ましたが、残念ながら 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 を更新することだけです。コントローラーからビューを返すにはどうすればよいですか?