1

私は自分のページでこの設定を大まかに行っています-ファイルアップロードコントロールと、「リスト」がデフォルトであるさまざまな部分ビューでスワップする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の方法があります...

4

1 に答える 1

1

注意として、ViewData は 1 つのリクエストにのみ存在します。現在行っているような情報を渡したい場合は、TempData を使用できます。

于 2012-12-06T03:46:36.960 に答える