MVC发布复杂的HttpPostedFileBase

时间:2014-02-12 09:06:31

标签: asp.net-mvc asp.net-mvc-4

我想将复杂的模型属性发布到HttpPostedFileBase

控制器

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(AlbumImagesLoc entity, int albumId, HttpPostedFileBase ImageUrl)
    { }

查看

@Html.TextBoxFor(model => model.AlbumImage.ImageUrl, new { type = "file" })
@Html.ValidationMessageFor(model => model.AlbumImage.ImageUrl)

现在问题是HttpPostedFileBase总是null,因为它的名称必须是AlbumImage.ImageUrl

如何避免MVC代码中的null

2 个答案:

答案 0 :(得分:0)

public class AlbumImagesLoc
{
    public int Id { get; set; }
    public string Name { get; set; }
    public AlbumImage ImageUrl { get; set; }  
}

[HttpGet]
public ActionResult Create()
{
   return View(new AlbumImagesLoc());
}


[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(AlbumImagesLoc entity, int albumId)
{
   var albumImagesLoc = new AlbumImagesLoc();
   albumImagesLoc.Name = clientViewModel.Name;
   albumImagesLoc.AlbumImage.Add(AlbumImagesLoc.ImageUrl);
   db.AlbumImagesLoc.Add(albumImagesLoc);
   db.SaveChanges();
   return RedirectToAction("Index");
}

@Html.TextBoxFor(model => model.AlbumImage.ImageUrl, new { type = "file" })
@Html.ValidationMessageFor(model => model.AlbumImage.ImageUrl)

答案 1 :(得分:0)

检查视图并查看" encetype"

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, 
new { enctype = "multipart/form-data", @class = "form-horizontal" }))