ASP.NET MVC如何在动作返回FileResult时重置表单?

时间:2010-02-28 21:57:33

标签: html asp.net-mvc forms submit

我有一个ASP.NET MVC表单,如果提交的话可以返回ActionResult,如果数据出错,或者一切正常,它会重定向到返回{{1}的其他操作}。

我已经创建了一些示例来提供我正在做的事情。这是html:

FileResult

,控制器代码为:

<%
using (Html.BeginForm())
%>
    <%= Html.ValidationSummary(
        "Edit was unsuccessful. Please correct the errors and try again.") %>
    <%= Html.TextBox("YourName", Model.YourName)%>
    <%= Html.ValidationMessage("YourName", "*") %>
    <input type="submit" />
<% } %>

[AcceptVerbs(HttpVerbs.Post)] public ActionResult MyPostSample(string YourName) { if (string.IsNullOrEmpty(YourName)) { ModelState.AddModelError("YourName", "You must specify a name"); } if (ModelState.IsValid) { // get the file RedirectToAction("GetFile"); } else { // return this actions View with errors return View(); } } public FileResult GetFile(string YourName) { // return file here } 的原因是填充ModelState错误,以便用户可以更正并重试。

这一切都运行正常,除非我希望在服务器返回文件时重置或清除表单。目前,用户获取“文件”对话框,但表单保留了提交的值。成功提交后,如何重置表单?

2 个答案:

答案 0 :(得分:1)

我建议使用一些触发下载的javascript返回一个新表单(以及如果下载没有启动则使用的链接)。我觉得这是确保无论是否使用javascript都可以运行的最好方法,并且可以为您提供所需的行为。

答案 1 :(得分:0)

除了@tv所说的,你可以考虑使用复合模型。也就是说,有两个模型的模型。第一个是表单详细信息,第二个是文件详细信息。

当您从成功返回时,您可以返回空表单模型和填充文件模型。

然后,我可能会在这里遇到麻烦,但UI应该真正照顾好自己。