1

我的页面上大致有这个设置 - 一个文件上传控件和一个 div(#changebit),它在不同的部分视图中交换,“列表”是默认设置。

            <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 方式来做到这一点......

4

1 回答 1

1

请注意,ViewData 仅存在于单个请求中。如果您想像现在正在做的那样传递信息,您可以使用 TempData。

于 2012-12-06T03:46:36.960 回答