我粗略地在我的页面上进行了这个设置 - 一个文件上传控件和一个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方式来做这件事......
答案 0 :(得分:1)
注意,ViewData只存在于一个请求中。 如果你想像现在一样传递信息,你可以使用TempData。