我有一个用户可以将文件上传到服务器的视图。
在此视图中,我还有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总是为空。我认为它是空的,因为你需要一个帖子到服务器。不是吗?
答案 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