У меня есть FileUpload
(из microsoft.web.helpers), который всегда равен нулю в методе Edit
ActionResult
.В методе Create
все работает нормально.Разница лишь в том, что это другая модель в Edit, где я получаю доступ к исходным свойствам через это.(если это имеет смысл).Вот код, чтобы вы могли видеть.Сначала модели, а затем контроллеры:
public class Files
{
public int Id { get; set; }
public List<string> FileName { get; set; }
public Artikel Artikel { get; set; }
}
public class Artikel
{
public int Id { get; set; }
public string Headline { get; set; }
public string Text { get; set; }]
public DateTime Date { get; set; }
public string Author { get; set; }
public bool Proof { get; set; }
public IEnumerable<HttpPostedFileBase> FileUpload { get; set; }
public string TextShort { get { return Text.Substring(0, 50); } }
}
Создание HttpPost:
[HttpPost]
public ActionResult Create(Artikel artikel)
{
if (ModelState.IsValid)
{
artikel.Date = DateTime.Now;
db.Artikler.Add(artikel);
db.SaveChanges();
foreach (var file in artikel.FileUpload)
{
try
{
if (file.ContentLength > 0)
{
var folder = Server.MapPath("~/uploads/Artikler/" + artikel.Id.ToString());
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(folder, fileName);
file.SaveAs(path);
}
}
catch (Exception ex)
{
//ex something someting..
}
}
return RedirectToAction("Index");
}
return View(artikel);
}
Редактирование:
public ActionResult Edit(int id)
{
var model = new Files
{
Artikel = db.Artikler.Find(id),
FileName = db.GetPictures(id, Server.MapPath("~/uploads/Artikler/"))
};
return View(model);
}
Редактирование HttpPost:
[HttpPost]
public ActionResult Edit(Files files)
{
if (ModelState.IsValid)
{
db.Entry(files.Artikel).State = EntityState.Modified;
db.SaveChanges();
if (files.Artikel.FileUpload != null)
{
foreach (var file in files.Artikel.FileUpload)
{
if (file.ContentLength > 0)
{
var folder = Server.MapPath("~/uploads/artikler/" + files.Artikel.Id.ToString());
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(folder, fileName);
file.SaveAs(path);
}
}
}
return RedirectToAction("Index");
}
return View(files);
}
Разметка:
@FileUpload.GetHtml()
Итак, ясно, что я что-то неправильно понял или сделал что-то не так.Есть идеи?