小编典典

如何将参数传递给 mvc 4 中的局部视图

all

我有一个这样的链接:

 <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);
    }

阅读 59

收藏
2022-08-08

共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"] })

与模型一样,RazorViewData默认会隐式传递您的局部视图,因此如果您ViewBag.Id在视图中有,那么您可以在局部视图中引用相同的内容。

2022-08-08