1

私はMVCビューにいます..

 //Submit file
 <% using (Html.BeginForm("MethodName","ControllerName", FormMethod.Post, new { enctype = "multipart/form-data"})) { %>         
     <input type="file" name="file" id="file"/>
     <input type="text" id="file-name" name="Id"/>
     <input type="submit" value="Submit" name="Submit"/>
 <% } %>     

//Save link.
 <span class="Update" onclick="js.function()">Update</span>

[送信] ボタンをクリックすると、コントローラーとメソッドに移動して、ファイルをデータベースに送信するコードを実行します。それが完了したら、送信後にjs関数が実行されるように、保存リンクを自動クリック/強制クリックする必要があります..どうすればそれを行うことができますか.

4

3 に答える 3

2

私は Ajax.BeginForm を使用し、OnSuccess ハンドラーでボタンをクリックできます。コードは次のようになります (テストされていませんが、正しい方向に導くはずです)。

<% using (Ajax.BeginForm("MethodName","ControllerName",
    new AjaxOptions { 
        OnSuccess ="OnSuccess",
        OnFailure ="OnFailure" 
    },  
    new { 
        enctype = "multipart/form-data"
    })) { %>         
     <input type="file" name="file" id="file"/>
     <input type="text" id="file-name" name="Id"/>
     <input type="submit" value="Submit" name="Submit"/>
 <% } %>    

Javascript :

function OnSuccess() {
    $('.Update').trigger('click');
}

編集:ファイルをアップロードしようとしていない場合、上記の私の答えはあなたが望むものです。ただし、ファイルを投稿しようとしていることに気付いたので、これをもう少し調べました。また、html 5、iframe ハックなどを使用せずに ajax を使用してファイルをアップロードすることはできません。あなたの最善の策は、アップロード方法に基づいて、html5、フラッシュ、またはハックを使用してこの問題を解決する、uploadifyまたはpluploadなどのアップローダーを使用することです。それらを設定します。

また、binding-httppostedfilebase-using-ajax-beginformも同様の質問で、役立つ可能性があります。

于 2012-08-14T17:03:23.587 に答える
0

いくつかの方法でそれを行うことができます.送信ボタンをトリガーとして使用して、投稿の標準的な方法であるデフォルトが発生しないようにすることができます。次に、代わりに jquery の post/get/ajax メソッドを呼び出します。そのpost/get/ajaxの連続で、他にやりたいことが何でも実行されます。

何か他のことを念頭に置いている場合は、jquery でボタンをクリックするだけです。 $('button').trigger('click');

残念ながら、あなたの説明は少しオープンエンドなので、具体的な答えを出すのは難しいです.

于 2012-08-14T15:06:20.447 に答える
0

triggerクリック (またはこのような他のイベント) を自動的に行うには、最初に次のようにイベントを確立する必要があります。

// setting up the event (in case they actually click it)
$('.Update').on('click', function () {
       test();
});

// this will automatically call it
$('.Update').trigger('click');

// whatever your function is doing
function test () {
    alert('here');
}

jsFiddle デモ </p>

于 2012-08-14T15:10:50.783 に答える