私は自分のページでこの設定を大まかに行っています-ファイルアップロードコントロールと、「リスト」がデフォルトであるさまざまな部分ビューでスワップするdiv(#changingBit)。
<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...
ただし、これはメインページ内では常にnullです。コントローラーのアップロードアクション内でその値を取得するにはどうすればよいですか?
ありがとう!
[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の方法があります...