2013-05-03 2 views
1

Я пытаюсь просто загрузить изображение, но HttpPostedFileBase в моем контроллере всегда остается нулевым.MVC 4 Загрузка файла не работает

Вот страница:

<% using(Html.BeginForm("AddPicture","Album",FormMethod.Post,new{enctype= "multipart/form-data" })) 
{ %> 
<%: Html.ValidationSummary(true) %> 

<fieldset> 
    <legend>PictureModel</legend> 

    <div class="editor-label"> 
     <%: Html.LabelFor(model => model.PrivacyTypeID) %> 
    </div> 
    <div class="editor-field"> 
     <%: Html.DropDownList("PrivacyTypeID", null, new { name = "PrivacyTypeID", title = "Please select privacy type.", id = "PrivacyTypeID" }) %> 
     <%: Html.ValidationMessageFor(model => model.PrivacyTypeID) %> 
    </div> 
    <div> 
     Upload Image: <input type="file" name="File1" /> 
    </div>   
    <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 

А вот контроллер страницы:

[HttpPost] 
    public ActionResult AddPicture(Guid id, PictureModel model, HttpPostedFileBase File1) 
    { 
     try 
     { 

      if (ModelState.IsValid) 
      { 
       var file = Request.Files[0]; 
       try 
       { 
        Guid albumid = id; 

        if (File1 != null) 
        { 

.....

Может кто-нибудь, пожалуйста, руководство меня, что делать у меня ошибка? Я попробовал все, но никаких результатов

ответ

0

Измените эту строку:

Upload Image: <input type="file" name="File1" id="File1" /> 

И изменить это:

public ActionResult AddPicture(Guid id, PictureModel model, HttpPostedFile File1) 
+0

Кроме того, вы должны иметь возможность работать с File1 непосредственно вместо Request.Files [0]. Model binding rocks :) – Antevirus

+0

Ничего не осталось null .. – user2191421

+0

да да, я знаю, что я просто использовал его для целей тестирования Request.Files [0]. – user2191421

0

Несколько вещей, чтобы отметить здесь, что может быть неправильно, или не правильный способ сделайте это:

  1. Где находится идентификатор Guid в форме, которую он должен установить. Html.Hidden(yourid); или Html.HiddenFor(model => model.id); < - не забудьте установить модель перед началом работы на последнем, например. :

    public ActionResult Index(){ 
        PictureModel p = new PictureModel(); 
        p.id = Guid.NewGuid(); 
        return View(p); 
    } 
    
  2. Используйте правильный метод DROPDOWNLIST и ваше отображение тоже неправильно здесь:

Правильный путь заключается в использовании:

DropDownListFor(model => model.PrivacyTypeID, model => model.selectListOfPrivacyTypes, "-- Select Privacy Type --"); 

Если ты хочешь для использования метода dropdownlist, то вы должны использовать имя PictureModel.PrivacyTypeID вместо PrivacyTypeID, чтобы использовать функцию отображения erly

Я не уверен, будет ли проблема исправления файла равным нулю, но это будет, безусловно, лучший код.

Смежные вопросы