我有这个:
<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代码以开始执行时。这该怎么做?
提交事件在它之前调用。
答案 0 :(得分:1)
这取决于表单的提交方式。
如果您通过AJAX提交表单,那么您可以在响应的处理程序中执行一些JavaScript。但是,鉴于有一个submit
按钮,我假设当前您没有通过AJAX执行此操作,而是将整个页面发布到服务器并呈现响应
在这种情况下,要在表单发布后执行一些JavaScript ,您将需要在服务器的响应中呈现该JavaScript作为下一页的一部分。当服务器构造视图时,请包含要在该视图中执行的JavaScript。
请记住网络的请求/响应性质。当服务器上的某些东西执行时,客户端不知道它并与之断开连接。任何服务器端处理的最终结果都应该是对客户端的HTTP响应。如果提交表单或单击链接或任何导致页面重新加载的内容,则该响应将采用新页面(视图)的形式。因此,在服务器端处理之后,您希望在客户端上执行的任何操作都需要作为响应的一部分发生。
修改:我刚注意到Blah
正在返回string
。这甚至对你有用吗?表单如何在新视图中提交结果?或者我不知道ASP.NET MVC中的一个功能?
答案 1 :(得分:0)
这就是我最后所做的。
我的表单返回与调用它的完全相同的视图。
我在Blah方法中添加了一个ViewData。
在视图中,在$(function())事件中,我检查ViewData是否有值,我执行javascript代码。