0

私は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 を更新することだけです。コントローラーからビューを返すにはどうすればよいですか?

4

1 に答える 1

0

問題を解決したので、iframeが置かれているdivの内容を置き換えるJavaScriptが少しありました...(額を叩きます)。すべてが完全に機能するようになりました:)

念のため、この質問をここに残します。

于 2012-08-24T10:39:53.883 に答える