这是html表格:
<input id="picture1" name="Input_Pictures" type="file" value="" />
<input id="picture2" name="Input_Pictures" type="file" value="" />
<input id="picture3" name="Input_Pictures" type="file" value="" />
我也尝试过:
<input id="picture1" name="Input_Pictures[]" type="file" value="" />
<input id="picture2" name="Input_Pictures[]" type="file" value="" />
<input id="picture3" name="Input_Pictures[]" type="file" value="" />
也是:
<input id="picture1" name="Input_Pictures[0]" type="file" value="" />
<input id="picture2" name="Input_Pictures[1]" type="file" value="" />
<input id="picture3" name="Input_Pictures[2]" type="file" value="" />
这是我的观点模型:
public class PicturesInputViewModel
{
public IEnumerable<HttpPostedFileBase> Pictures { get; set; }
}
这是提交行动:
[HttpPost]
public ActionResult Submit(PicturesInputViewModel input)
{
我可以查看Request.Files
集合中的文件,但Pictures
始终为空。
如何解决此绑定问题?
我成功使用此代码的平均时间:
var pics = new List<HttpPostedFileBase>();
foreach (string name in Request.Files)
{
var file = Request.Files[name];
if (file.ContentLength > 0)
pics.Add(file);
}
input.Pictures = pics;
答案 0 :(得分:0)
尝试为控件指定不同的名称:
Picture[1], Picture[2], .. , Picture[n]
。
Binder无法决定picture2必须在Pictures集合中。
抱歉,MVC没有文件集合的活页夹。 您可以使用MvcFutures项目中的FileCollectionModelBinder。 您所要做的就是引用MVCFutures程序集并添加其他模型绑定程序(在global.asax.cs或其他地方):
FileCollectionModelBinder.RegisterBinder(ModelBinders.Binders);
答案 1 :(得分:-2)
查看此帖子Having troubles calling a Controller Post Method…
这可能会为您提供有关如何解决问题的线索。