0

基本的に私は画像アップロードコントローラーを持っており、それを次のようにページに挿入しています:-

    <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>

そのため、IDを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 }

ProjectIDは正しく入力されていますが、画像をアップロードするとProjectIDが失われ、ゼロになります。ProjectIDを2回目に保持する方法はありますか?

あなたの助けと時間をありがとう。

** * ** * ** * 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");
    }
4

1 に答える 1

1

projectIdからルート値としてを渡すことができますRedirectToActionImageUploadを受け入れるようにアクションを変更する必要があり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);   
}
于 2012-06-06T10:01:31.063 に答える