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');
}

编辑:如果您不尝试上传文件,我上面的答案就是您想要的。但是,当我注意到您正在尝试发布文件时,我对此进行了更多调查;并且您不能使用 ajax 上传文件而不使用 html 5、iframe hacks 等。在我看来,您最好的选择是使用上传器,例如uploadifyplupload,根据您的方式使用 html5、flash 或 hacks 解决此问题设置它们。

此外,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 DEMO ​</p>

于 2012-08-14T15:10:50.783 回答