次のようなリンクがあります:
<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
ビューに部分がある場合は、部分で同じものを参照できます。