表单提交结束时的事件

时间:2012-12-22 13:36:08

标签: c# javascript jquery

我有这个:

<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代码以开始执行时。这该怎么做?
提交事件在它之前调用。

2 个答案:

答案 0 :(得分:1)

这取决于表单的提交方式。

如果您通过AJAX提交表单,那么您可以在响应的处理程序中执行一些JavaScript。但是,鉴于有一个submit按钮,我假设当前您没有通过AJAX执行此操作,而是将整个页面发布到服务器并呈现响应

在这种情况下,要在表单发布后执行一些JavaScript ,您将需要在服务器的响应中呈现该JavaScript作为下一页的一部分。当服务器构造视图时,请包含要在该视图中执行的JavaScript。

请记住网络的请求/响应性质。当服务器上的某些东西执行时,客户端不知道它并与之断开连接。任何服务器端处理的最终结果都应该是对客户端的HTTP响应。如果提交表单或单击链接或任何导致页面重新加载的内容,则该响应将采用新页面(视图)的形式。因此,在服务器端处理之后,您希望在客户端上执行的任何操作都需要作为响应的一部分发生。

修改:我刚注意到Blah正在返回string。这甚至对你有用吗?表单如何在新视图中提交结果?或者我不知道ASP.NET MVC中的一个功能?

答案 1 :(得分:0)

这就是我最后所做的。

我的表单返回与调用它的完全相同的视图。

我在Blah方法中添加了一个ViewData。

在视图中,在$(function())事件中,我检查ViewData是否有值,我执行javascript代码。