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

4

2 回答 2

1

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

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

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

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

编辑:我刚刚注意到它Blah正在返回一个string. 这对你有用吗?表单提交结果如何出现在新视图中?还是我不知道 ASP.NET MVC 中的某个功能?

于 2012-12-22T13:45:27.343 回答
0

这就是我最后所做的。

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

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

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

于 2013-01-04T20:11:37.773 回答