FileUpload
(microsoft.web.helpers에서)은 Edit
ActionResult
메서드에서 항상 null입니다. Create
메서드에서 제대로 작동합니다. 차이점은 편집을 통해 다른 모델을 통해 원래의 속성에 액세스 할 수 있다는 것입니다. (그것이 의미가있는 경우). 여기 코드를 볼 수 있습니다. 먼저 다음 모델과 컨트롤러 :MVC3 편집 메서드에서 항상 FileUpload (웹 도우미)가 null입니다.
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()
그래서 분명히 잘못 이해했거나 잘못되었습니다. 어떤 아이디어?
Darin을 다시 여는 중입니다. 속성 didnt 도움. 마크 업이 정확합니다. –
@ Kasper Skov, 입력 이름입니다. –
아, 젠장, 그 도우미는 @FileUpload라고 불렀다. 그것은 스스로 FileUpload라는 이름을 생성합니다. 그래서 위선적 인 말은 실제로 그것에 대해 아무 것도하지 않습니다. 내일 모델을 재 설계하는 데 어려움을 겪습니다. 악의에 들으십시오 :) –