我有一个这样的链接:
<a href='Member/MemberHome/Profile/Id'><span>Profile</span></a>
当我点击它时,它会调用这个部分页面:
@{ switch ((string)ViewBag.Details) { case "Profile": { @Html.Partial("_Profile"); break; } } }
部分页面 _Profile 包含:
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); }
你的问题很难理解,但如果我得到了要点,你只是在你的主视图中有一些价值,你想在该视图中呈现的部分访问。
如果您只使用部分名称渲染部分:
@Html.Partial("_SomePartial")
它实际上会将您的模型作为隐式参数传递,就像您要调用一样:
@Html.Partial("_SomePartial", Model)
现在,为了让您的部分能够真正使用它,它也需要有一个定义的模型,例如:
@model Namespace.To.Your.Model @Html.Action("MemberProfile", "Member", new { id = Model.Id })
或者,如果您正在处理不在视图模型上的值(它在 ViewBag 中或以某种方式在视图本身中生成的值,那么您可以传递ViewDataDictionary
ViewDataDictionary
@Html.Partial("_SomePartial", new ViewDataDictionary { { "id", someInteger } });
接着:
@Html.Action("MemberProfile", "Member", new { id = ViewData["id"] })
与模型一样,RazorViewData默认会隐式传递您的局部视图,因此如果您ViewBag.Id在视图中有,那么您可以在局部视图中引用相同的内容。
ViewData
ViewBag.Id