2013-11-12 1 views
2

Здравствуйте, спасибо вам за это!Модель возврата, но она равна нулю. C# MVC4

Я использую Imageresizer и загружаю фотографию, что я хочу сделать, это получить URL-адрес, который я получаю, и вернуть его в свой вид. я получил URL, что я хочу, но я не получаю, чтобы вернуть его дальше .. это мой код атм:

public ActionResult UploadPhoto(Image img, HttpPostedFileBase file, ProfilePageModel model) 
     { 

      var currentUser = CommunitySystem.CurrentContext.DefaultSecurity.CurrentUser; 
      bool isAccepted = false; 

      string fileName = string.Empty; 
      if (file.ContentLength > 0) 
      { 
       string fName = System.Guid.NewGuid().ToString(); 
       //Generate each version 
       foreach (string fileKey in System.Web.HttpContext.Current.Request.Files.Keys) 
       { 
        HttpPostedFile uploadFile = System.Web.HttpContext.Current.Request.Files[fileKey]; 
        //Generate a filename (GUIDs are best). 
        fileName = Path.Combine("~/uploads/", fName + format); 

        //Let the image builder add the correct extension based on the output file type 
        ImageBuilder.Current.Build(uploadFile, fileName, new ResizeSettings(
           "width=300;format=jpg;mode=max;crop=20,20,80,80;cropxunits=100;cropyunits=100")); 
        model.fileName = fileName; 




       } 
       return RedirectToAction("EditProfile"); 
      } 
      return RedirectToAction("EditProfile"); 
     } 

Когда я огонь это, «загрузить файл и нажмите Submit» Я получаю, что модель равна нулю, модель содержит информацию о профиле, например имя, какую страну ur и т. д. Мне как-то нужно добавить значения в мою модель, чтобы я мог ее вернуть? (так что это не сбой) любые идеи?

+0

У вас нет соответствующего кода. Вы перенаправлены в '/ EditProfile /', какой метод действия якобы возвращает 'View()' без модели. Если это не так, вы имеете в виду, что вы получаете 'NullReferenceException' в' model.fileName = fileName; '? – CodeCaster

+0

Хорошо, я вижу! Проблема в том, что я получаю значение от моего model.fileName, но как вы можете видеть, я присваиваю свой профильpagemodel, и его значение в этой модели равно null, кроме имени файла .. поэтому он сбой .. im using redirecttoaction ("editprofile", model) < - здесь я отправляю свою модель дальше на мою страницу редактирования. где я хочу, чтобы значения имени файла отображались в изображении src ,, weird eh – user2862542

+0

** Где ** возникает исключение и как оно выглядит на самом деле? – CodeCaster

ответ

2

Для того чтобы модель имела значения, ее свойства должны существовать в form. Вам нужно как минимум добавить скрытые поля для каждого свойства, которое вы хотите отправить обратно на POST.

+0

Проблема в том, что они существуют, но в другом методе, называемом «сохранить профиль»: s – user2862542

+0

@ user2862542, они должны существовать в 'форме', которую вы публикуете. –

+0

u означает мой метод? он должен существовать в моем методе, называемом uploadPhoto? – user2862542

2

Первая проблема заключается в том, что из кода кажется, что вы не возвращаете модель в свои методы RedirectToAction, конечно, зависит от того, хотите ли вы этого сделать.

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

+0

hm, я знаю, что я не возвращаю любую информацию о модели, но Im думает, что вернуть, я не могу просто вернуть model.filename, он имеет значение, которое я хочу .. но если я его верну, все остальное в модели будет ноль. Мне почему-то нужно получить значения для этого метода для модели xD, если вы знаете, что я имею в виду. @ahmed ilyas – user2862542

+0

не уверен, что вы имеете в виду ... если вы его вернете, все остальное в модели будет нулевым? нет. Если модель имеет значения, то она вернет эти значения в модели. ничто не будет равно null, если вы не установили его в значение null или размещенная модель не будет создана в конвейере, которая будет передана контроллеру. –