0

私はこれを持っています:

<form id="import_form" method="post" enctype="multipart/form-data" action="/Blah/Blah">
    <input type="file" id="fileUpload" name="fileUpload"/>
    <input type="submit" name="submit" value="Import"/>
</form>

$('#import_form').submit(function () {
    ...
});

C# メソッドは次のとおりです。

[AcceptVerbs(HttpVerbs.Post)]
public string Blah(HttpPostedFileBase fileUpload, FormCollection form)
{ ... }

Blah が javacript コードの実行を終了したら、実行を開始したいと考えています。これを行う方法?
submit イベントはその前に呼び出されます。

4

2 に答える 2

1

これは、フォームの送信方法によって異なります。

AJAX 経由でフォームを送信している場合は、応答のハンドラーで JavaScript を実行できます。ただし、submitボタンがあることを考えると、AJAXを介してこれを行っているのではなく、代わりにページ全体をサーバーに投稿して応答をレンダリングしていると思います。

この場合、フォームの送信に JavaScript を実行するには、次のページの一部としてサーバーからの応答でその JavaScript をレンダリングする必要があります。サーバーがビューを作成するときに、そのビューで実行する JavaScript を含めます。

Web の要求/応答の性質に留意してください。サーバー上で何かが実行されると、クライアントはそれを認識せず、サーバーから切断されます。サーバー側の処理の最終結果は、クライアントへの HTTP 応答である必要があります。フォームを送信したり、リンクをクリックしたり、ページのリロードを引き起こす何かをクリックしたりすると、その応答は新しいページ (ビュー) の形式になります。したがって、サーバー側の処理の後にクライアントで実行したいことはすべて、その応答の一部として発生する必要があります。

編集:Blahが .を返していることに気付きましたstring。これはあなたのために働いていますか?フォームを送信すると、新しいビューがどのように表示されますか? それとも、ASP.NET MVC の機能を知らないのでしょうか?

于 2012-12-22T13:45:27.343 に答える
0

これが私が最終的にやったことです。

私のフォームは、それが呼び出されたのとまったく同じビューを返します。

Blah メソッドに ViewData を追加します。

ビューの $(function()) イベントで、ViewData に値があるかどうかを確認し、javascript コードを実行します。

于 2013-01-04T20:11:37.773 に答える