如何将数据从部分视图传递回MVC中的页面

时间:2012-12-06 03:39:56

标签: asp.net-mvc

我粗略地在我的页面上进行了这个设置 - 一个文件上传控件和一个div(#changingBit),它在不同的部分视图中交换,默认为“List”。

            <td><input type="file" name="Image" /></td>
            <td><input type="submit" value="Save" /></td>

                <div id="changingBit">
                    @Html.Partial("List", Model.Things)    
                </div>

这些部分视图基本上列出了文件夹和文件。我需要能够将部分视图的操作中可用的参数(如当前的文件夹路径)传递给上传控制器操作。

我尝试在列表/编辑部分视图中添加此内容

ViewData["id"] = some value...

但是在主页面中它总是为空。如何在上传控制器操作中获取该值?

谢谢!

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Upload(HttpPostedFileBase image)
    {

       //some magic to access a partial views variable
       // .............
       //

        if (image != null)
        {
            var fileName = Path.GetFileName(image.FileName);
            var path = Path.Combine(Server.MapPath("~/Directories/YourDirectory"), fileName);
            image.SaveAs(path);
        }
        return RedirectToAction("Index");
    }
    [HttpGet]
    public ActionResult Edit(int id)
    {
         ViewData["id"] = id;                 <--- how to get this file inside Upload action?
         ...

    }

修改

结束在主页上执行此操作

<input type="hidden" name="currentIdSelection" value="@Model.CurrentIdSelection" />

现在可以使用,我改变了我传入“编辑”局部视图的模型来存储另一个值。可能有更多的MVC方式来做这件事......

1 个答案:

答案 0 :(得分:1)

注意,ViewData只存在于一个请求中。 如果你想像现在一样传递信息,你可以使用TempData。