2012-06-06 5 views
0

В принципе у меня есть образ загрузки контроллера, что я вставив в страницах следующим образом: -Упорство ID по всему ASP.NET MVC Просмотры

<div id='imageList'> 
    <h2>Upload Image(s)</h2> 
    @{ 
     if (Model != null) 
     { 
      Html.RenderPartial("~/Views/File/ImageUpload.cshtml", new MvcCommons.ViewModels.ImageModel(Model.Project.ProjectID)); 
     } 
     else 
     { 
      Html.RenderPartial("~/Views/File/ImageUpload.cshtml", new MvcCommons.ViewModels.ImageModel(0)); 
     } 
    } 
</div> 

Так я передаю идентификатор к ImageUpload, в этом случае ProjectID, чтобы я мог включить его в мою вставку.

Теперь это кусок кода заселение в ImageModel (ID), в моем случае его ProjectID: -

public ImageModel(int projectId) 
    { 
     if (projectId > 0) 
     { 
      ProjectID = projectId; 
      var imageList = unitOfWork.ImageRepository.Get(d => d.ItemID == projectId && d.PageID == 2); 
      this.AddRange(imageList); 
     } 
    } 

и это, в свою очередь, приводит к ImageUploadView.cshtml: -

<table> 
@if (Model != null) 
{ 
    foreach (var item in Model) 
    { 
    <tr> 
     <td> 
      <img src= "@Url.Content("/Uploads/" + item.FileName)" /> 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Description) 
     </td> 
    </tr>  
} 
} 
</table> 

@using (Html.BeginForm("Save", "File", new { ProjectID = Model.ProjectID }, 
     FormMethod.Post, new { enctype = "multipart/form-data" })) 

{ 
    <input type="file" name="file" /> 
    <input type="submit" value="submit" /> <br /> 
    <input type="text" name="description" /> 
} 

до сих пор так хорошо, однако моя проблема заключается в том, что в первый раз

new { ProjectID = Model.ProjectID } 

правильно заселенный с Pro jectID, однако, когда я загружаю изображение, ProjectID теряется и становится нулевым. Есть ли способ, которым я могу повторить ProjectID во второй раз?

Thansk - ваша помощь и время.

** * ** * ** * UPDATE * ** * ** * ** * ** * ** * ** * ** * *** После загрузки, действие следующим образом внутри FileController: -

 public ActionResult Save(int ProjectID) 
    { 
     foreach (string name in Request.Files) 
     { 
      var file = Request.Files[name]; 

      string fileName = System.IO.Path.GetFileName(file.FileName); 
      Image image = new Image(fileName, Request["description"]); 

      ImageModel model = new ImageModel(); 
      model.Populate(); 
      model.Add(image, file); 
     } 
     return RedirectToAction("ImageUpload"); 
    } 
+0

Я могу думать, что это определение маршрута save/file/id в вашем global.asax. – maztt

+0

Привет мажар, не могли бы вы привести мне пример или указать мне на какой-то учебник. Никогда не делал этого до – Johann

+0

После загрузки изображения вы все еще показываете тот же вид? Можете ли вы опубликовать некоторый код действия «Сохранить/Файл»? – VJAI

ответ

1

Вы можете передать projectId как значение маршрута от RedirectToAction. Вы должны изменить действие ImageUpload, чтобы принять projectId.

public ActionResult Save(int projectId) 
{ 
    .... 
    return RedirectToAction("ImageUpload", new { projectId = projectId }); 
} 

public ActionResult ImageUpload(int projectId) 
{ 
    var model = .. get the model from db based on projectId 
    return View("view name", model); 
} 
+0

Спасибо, Марк, я попробую и расскажу коротко! – Johann

+0

Привет, Марк, это не совсем работает, поскольку в ImageUpload.cshtml во второй раз ProjectID равен 0. Поэтому, когда я создаю проект, идентификатор верен, однако, когда я выполняю загрузку и нажимаю submit, ProjectID сбрасывается снова 0, поэтому он, похоже, не поддерживается – Johann

+0

R u отправляет модель в обратном представлении View() в действие ImageUpload все время? Я думаю, что, поскольку модель равна нулю, вы получаете projectid как «0» во второй раз. – VJAI

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