Asp.net mvc 3 视图和控制器中的文件上载逻辑(MVC3)
我想在MVC中实现一个文件上传逻辑,我的视图(cshtml)将包含如下内容Asp.net mvc 3 视图和控制器中的文件上载逻辑(MVC3),asp.net-mvc-3,file-upload,razor,controller,Asp.net Mvc 3,File Upload,Razor,Controller,我想在MVC中实现一个文件上传逻辑,我的视图(cshtml)将包含如下内容 <div id="dialog" title="Upload files"> <p><input type="file" id="fileUpload" name="fileUpload" /> </p> <p><input type="submit" value="Upload file" /><
<div id="dialog" title="Upload files">
<p><input type="file" id="fileUpload" name="fileUpload" /> </p>
<p><input type="submit" value="Upload file" /></p>
<% } %>
</div>
如何链接单击事件以触发此控制器?这只是我在网上得到的一个示例代码,如果不正确,请告诉我
谢谢,
Adarsh您将通过提交表单触发此控制器操作,就像MVC范例一样 在视图中,您应该将此HTML放置在如下表单中:
@using (Html.BeginForm("FileUpload", "<ControllerNameHere>", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<p><input type="file" id="fileUpload" name="fileUpload" /> </p>
<p><input type="submit" value="Upload file" /></p>
}
@使用(Html.BeginForm(“FileUpload”,“”,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
}
这将触发您的控制器。
我不知道如何使用该文件作为参数工作。我通常在我的控制器中使用
Request.Files
属性。使用Request.Files似乎是一个更好的主意,请使用示例代码:)这只是一个文件集合,所以:if(Request.Files.Count>0){foreach(HttpPostedFileBase file in Request.Files){//做你的文件工作}
谢谢,在这种情况下,我的控制器将不接受任何参数。在操作方法[AcceptVerbs(HttpVerbs.Post)]之前,我需要这一行吗?实际上,您的控制器不再需要任何参数。是的,在本例中需要该属性,当您使用HTTP Post访问在本例中发生的操作时需要该属性,因为formmethod等于Post并因此调用Post。
@using (Html.BeginForm("FileUpload", "<ControllerNameHere>", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<p><input type="file" id="fileUpload" name="fileUpload" /> </p>
<p><input type="submit" value="Upload file" /></p>
}