如何在MVC中以编程方式显示隐藏的局部视图

时间:2016-09-27 12:46:34

标签: asp.net-mvc asp.net-mvc-4 razor

我有一个最初隐藏的部分视图_ABC.cshtml。

<div id="overview" style="display:none">

    <h1> Overview</h1>
    <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 leftlist">

    </div>
    <div class="col-xs-9 col-sm-9 col-md-9 col-lg-9 overview">
        <h3 class="isppagetitle">@Resources.Overview</h3>
        <div class="row col-xs-12 col-sm-12 col-md-12 col-lg-12 content">
            <div class="row">
               ......

但现在从其他观点来看,我希望它能够呈现。

    public ActionResult Index()
    {
        return PartialView("_AMgmtPartial");
    }

我在_AMgmtPartial中做过..

<div class="account-root">

    @{
        Html.RenderPartial("_CustList");
        Html.RenderPartial("_ABC", new { style = "display:block" });
    }


    <input type="hidden" id="accountmgmturl" value='@Url.Action("", "AccountMgmt")' />

   ...............
   ...............

但这style="display:block;"没有用。我做错了什么?

1 个答案:

答案 0 :(得分:2)

Html.RenderPartial没有接受HtmlAttributes的参数。通过查看the documentation确认了这一点。

您已填充的参数可通过以下方式访问:

public ActionResult Index(string style)
{
    // style will equal "display:block"

    return PartialView("_AMgmtPartial");
}

您可以使用此值并通过视图包或视图模型将其传递到局部视图。

public ActionResult Index(string style = "display: none")
{
    // style will equal "display:block"

    ViewBag.PartialStyle = style;

    return PartialView("_AMgmtPartial");
}

然后这可以在您的视图中访问它:

<div id="overview" style="@ViewBag.PartialStyle">

    <h1> Overview</h1>
    <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 leftlist">

    </div>
    <div class="col-xs-9 col-sm-9 col-md-9 col-lg-9 overview">
        <h3 class="isppagetitle">@Resources.Overview</h3>
        <div class="row col-xs-12 col-sm-12 col-md-12 col-lg-12 content">
            <div class="row">
               ......

要做到这一点虽然会是一个肮脏的黑客。正如@Stephen所提到的更优选的解决方案是将部分视图渲染语句包装在<div>中,并且您应该设置初始可见性。

<div style="display: block">
    @Html.Partial("_ABC");
</div>