, 난 당신에게 내 상황 제공 : 나는 모델 클래스 일부 부가 요소로 "영화는"(중요하지 않음)이파일 업로드 ASP MVC 4.0
- 을
- 이미지를 모델과 다르게 만들기 위해 모델을 터치하지 않고 컨트롤러 및 뷰 파트에 코드를 추가하고 싶습니다.
그래서, 여기에 내보기 코드의 예입니다, 내가 굵은 선은 나에 의해 추가 된 것 :
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Movie</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Duration)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Duration)
@Html.ValidationMessageFor(model => model.Duration)
</div>
//ADDED BY ME:
<div class="editor-label">
<p>Select a file</p>
</div>
<div class="editor-field">
<input type="file" name="fileUpload" />
</div>//END OF MY CODE
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
그래서 당신은 내가 나를 추가 할 수 있습니다 ASP에 의해 생성 된 일부 코드를 볼 수 있습니다 db에 새로운 사용자, 이미지 업로드를 위해 추가 한 "input".
문제는 컨트롤러에서 이미지를 복구하려고 할 때 "Request.Files"atributte가 비어있어 이미지를 복구 할 수 없으며 물론 업로드 할 수 없다는 것입니다. 컨트롤러 코드 :
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Movie movie)
{
if (ModelState.IsValid)
{
db.MovieContext.Add(movie);
db.SaveChanges();
foreach (string file in Request.Files)
{
var postedFile = Request.Files[file];
postedFile.SaveAs(Server.MapPath("~/UploadedFiles") + pelicula.Id);
}
return RedirectToAction("Index");
}
return View(movie);
}
아래 시도 누군가가 나를 도울 수 있다면 그것은 좋은 것 때문에 "Request.Files는"비어있는 이유를 알고 당신에게
죄송합니다 사용하고 있습니다 : 짧은 문제에 내가 여기
enctype = "multipart/form-data"
전체 코드입니다 내 양식에 대한 인코딩을 지정 didnt는 것을 위해이었다 대답. 짧은 시간에. fileUpload는 Create (Movie 무비, HttpPostedFile fileUpload)의 fileUpload에 바인드해야합니다. 그럼 너의 마술을해라. – Antevirus이것이 왜 작동할까요? 보기에서 뭔가를 만져야합니까? 지금 당장 시험해 보겠습니다.) – Santanor
두 번째 매개 변수와 줄을 추가하면 죄송합니다. 작동하지 않습니다. "if"modelState.IsValid가 동일합니다. false로 설정하면 내 마법이 실행되지 않습니다. P – Santanor