代码之家  ›  专栏  ›  技术社区  ›  Leniel Maccaferri

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

  •  3
  • Leniel Maccaferri  · 技术社区  · 16 年前

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

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

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

    我尝试过Html.ActionLink:

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

    Html.ActionLink没有起作用。操作链接将我带到正确的操作方法,但是它们生成了一个GET请求。这样Request.Files.Count=0。

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

    3 回复  |  直到 16 年前
        1
  •  9
  •   CoffeeCode    16 年前

    也许这会给你一个想法:

    看法 :

    <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);
                }
            }
    

    这个 出口 是否采取了适当的行动

        2
  •  2
  •   Dustin Laine    16 年前

    您必须使用“多部分/表单数据”表单,并提交表单。没有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>
    
        3
  •  1
  •   Alastair Pitts    16 年前

    要生成上传的POST请求,请使用File Input form元素,然后将其发回服务器。

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

    看看斯科特·汉斯曼的这篇博文。 http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx