MVC 4の部分ビューにパラメータを渡すにはどうすればいいですか?質問する

MVC 4の部分ビューにパラメータを渡すにはどうすればいいですか?質問する

次のようなリンクがあります:

 <a href='Member/MemberHome/Profile/Id'><span>Profile</span></a>

これをクリックすると、次の部分ページが呼び出されます。

 @{
    switch ((string)ViewBag.Details)
    {

        case "Profile":
        {
           @Html.Partial("_Profile"); break;
        }

    }
}

部分ページ_プロフィールの内容:

Html.Action("Action", "Controller", model.Paramter) 

例:

@Html.Action("MemberProfile", "Member", new { id=1 })   // id is always changing

私の疑問は、どうすればこの「Id」をmodel.parameter部分に渡します?

私のコントローラーは次のとおりです:

 public ActionResult MemberHome(string id)
    {
        ViewBag.Details = id;
        return View();
    }
  public ActionResult MemberProfile(int id = 0)
    {
        MemberData md = new Member().GetMemberProfile(id);
        return PartialView("_ProfilePage",md);
    }

ベストアンサー1

質問は理解しにくいですが、要点を理解すれば、メイン ビューに何らかの値があり、そのビューでレンダリングされる部分でその値にアクセスしたいだけです。

部分名のみを使用して部分をレンダリングする場合:

@Html.Partial("_SomePartial")

実際には、次のように呼び出す場合と同じように、モデルが暗黙的なパラメータとして渡されます。

@Html.Partial("_SomePartial", Model)

ただし、実際に部分でこれを使用できるようにするには、次のように定義されたモデルも必要です。

@model Namespace.To.Your.Model

@Html.Action("MemberProfile", "Member", new { id = Model.Id })

あるいは、ビューのモデルにない値(ViewBag内にある値やビュー自体で生成された値)を扱う場合は、ViewDataDictionary

@Html.Partial("_SomePartial", new ViewDataDictionary { { "id", someInteger } });

その後:

@Html.Action("MemberProfile", "Member", new { id = ViewData["id"] })

モデルと同様に、Razor はViewDataデフォルトで部分をビューに暗黙的に渡すため、ViewBag.Idビューに部分がある場合は、部分で同じものを参照できます。

おすすめ記事