我知道有很多像这样的问题,但是我把它们全部读出来并且它们无效解决了我的问题。下面我将在我的视图和控制器中显示我的代码,以便您可以了解我的代码。
View :
<td><% using (Html.BeginForm("Index", "Home", FormMethod.Post, new {enctype = "multipart/form-data"})) { %>
<%: Html.ValidationSummary(true) %>
<div id="section1">
<div class="editor-label">
<%: Html.LabelFor(model => model.Name) %>
</div>
<label for="file">Filename:</label>
<input type="file" name="myfile" id="File5" value="Choose File Banner1" />
<p> </p>
And here is my controller:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(HomeModel model, string submitButton, HttpPostedFileBase myfile)
{
我无法弄清楚问题是什么问题..有人可以帮我吗
答案 0 :(得分:10)
我也有同样的问题,我在寻找答案时最终到了这里。我忘记了表单定义中的enctype参数
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
// form
}
答案 1 :(得分:0)
之前我遇到过同样的问题, 我不得不从文件输入中删除值以使其工作:
<input type="file" name="myfile" id="File5" />
答案 2 :(得分:0)
此问题有多种原因:
enctype
代码<form>
属性
name
代码<input type="file">
属性
<form>
<form>
个标记
如果这些都不是您的问题,这对我有用:向您的视图模型添加HttpPostedFileBase属性(或使用该属性创建视图模型)。
查看模型
public class MyViewModel
{
public HttpPostedFileBase MyFile { get; set; }
}
<强>控制器强>
public ActionResult Index()
{
return View(new MyViewModel());
}
[HttpPost]
public ActionResult Index(MyViewModel viewModel)
{
HttpPostedFileBase file = viewModel.MyFile;
if (file != null && file.ContentLength > 0)
{
// Your code here
}
}
答案 3 :(得分:0)
在视图中,在enctype附近尝试使用html属性“@data_ajax =”false“”
(Html.BeginForm("Index", "Home", FormMethod.Post, new {enctype = "multipart/form-data", @data_ajax = "false" }))
答案 4 :(得分:0)
您是否在输入元素中设置了value=""
?
答案 5 :(得分:0)
我将UI复制到我正在运行的MVC3应用程序中,发现上传部分开始出现同样的错误。我发现页面布局中有一个额外的表单(使其成为嵌套表单)。我把它删除了,一切都很适合我。