处理2个按钮在单个视图/表单中提交操作 - ASP.NET MVC 2 RTM

时间:2010-03-14 23:20:28

标签: post asp.net-mvc-2 actionmethod

我有一个用户可以将文件上传到服务器的视图。

在此视图中,我还有2个按钮:一个用于上传文件,另一个用于下载导入的最后一个文件。

在我的控制器中,我创建了两种操作方法:导入和导出。

如何设法将每个按钮单击重定向到我的控制器中的正确操作方法?

我试过Html.ActionLink:

<%= Html.ActionLink("Upload", "Import", "OracleFile")%>
<%= Html.ActionLink("Download", "Export", "OracleFile")%>

Html.ActionLink没有做到这一点。动作链接带我到正确的Action方法,但他们正在生成GET请求。这样Request.Files.Count = 0。

我需要一个POST请求。

注意:最有趣的部分是上传工作,突然间它停止工作。我已经看到有些人在FileUpload任务中遇到同样的问题,其中Request.Files总是为空。我认为它是空的,因为你需要一个帖子到服务器。不是吗?

3 个答案:

答案 0 :(得分:9)

也许这会给你一个想法:

查看

<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
    <input type="file" name="file" id="file" /> 
    <input type="submit"  name= "submitImport" value="Upload" />
    <input type="submit" name = "submitExport"  value="Download" />
</form>

<强>控制器:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Action (FormCollection formCollection)
        {
            if (formCollection["submitImport"] != null)
            {
                return Import(formCollection);
            }
             if (formCollection["submitExport"] != null)
            {
                return Export(formCollection);
            }
        }

导出导入是适当的行为

答案 1 :(得分:2)

您必须使用“multipart / form-data”表单,然后提交表单。没有ActionLink。

<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
    <input type="file" name="file" id="file" /> 
    <input type="submit" value="Upload" />
</form>

答案 2 :(得分:1)

要为上传生成POST请求,请使用“文件输入”表单元素,然后将其回发到服务器ala normal。

http://www.w3schools.com/jsref/dom_obj_fileupload.asp

查看Scott Hanselman撰写的这篇博客文章。 http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx