如何将参数传递给@ Html.Partial并将其读入View?

时间:2016-07-08 13:17:50

标签: asp.net-mvc

我在网站标题中有一部分导航栏代码。

我在几个观点中重复它。 对于所有视图,代码几乎相等,仅为设置css类“active”而更改,以设置<li> TAG的背景颜色。

部分观点

 @Model String
<nav class="navbar">
        <div class="container">
            <ul class="nav nav-pills nav-justified">
                <li>
                    <a href="MainPage">
                        <span class="glyphicon glyphicon-dashboard" aria-hidden="true">&nbsp;</span>
                        MainPage
                    </a>
                </li>
                <li class="active">
                    <a href="SectionSummary">
                        <span class="glyphicon glyphicon-stats" aria-hidden="true">&nbsp;</span>
                        Summary
                    </a>
                </li>
                <li>
                    <a href="Check">
                        <span class="glyphicon glyphicon-check" aria-hidden="true">&nbsp;</span>
                        Check
                    </a>
                </li>
                <li  class="(@Model=="Print")?"active":"">
                    <a href="Print">
                        <span class="glyphicon glyphicon-print" aria-hidden="true">&nbsp;</span>
                        Print
                    </a>
                </li>
            </ul>
        </div>
    </nav>

我以这种方式在视图中调用它:

@Html.Partial("~/Views/Shared/PSANavigationBar.cshtml")

我会将参数传递给@Html.Partial,然后在PartialView中测试一个值并在出现条件时标记class="active"

例如:

@Html.Partial("~/Views/Shared/PSANavigationBar.cshtml", "Print")

在视图中,如下所示:

        </li>
         <li  class="(@Model=="Check")?"active":"">
            <a href="Check">
                <span class="glyphicon glyphicon-check" aria-hidden="true">&nbsp;</span>
                Check
            </a>
        </li>
         <li  class="(@Model=="Print")?"active":"">
            <a href="Print">
                <span class="glyphicon glyphicon-print" aria-hidden="true">&nbsp;</span>

但它不起作用! 我该怎么办?

非常感谢所有人。

1 个答案:

答案 0 :(得分:1)

您调用局部视图的方式看起来没问题,您只需要更改选择课程的方式:

<li class="@(Model == "Check" ? "active":"")">

Model是您接收参数的方式,这是一种可以在剃刀条件下选择类的方法。你可以看到another example在使用asp mvc razor的情况下如何选择你的班级。

你应该有这样的东西:

@model String
<nav class="navbar">
        <div class="container">
            <ul class="nav nav-pills nav-justified">
                <li>
                    <a href="MainPage">
                        <span class="glyphicon glyphicon-dashboard" aria-hidden="true">&nbsp;</span>
                        MainPage
                    </a>
                </li>
                <li class="active">
                    <a href="SectionSummary">
                        <span class="glyphicon glyphicon-stats" aria-hidden="true">&nbsp;</span>
                        Summary
                    </a>
                </li>
                <li>
                    <a href="Check">
                        <span class="glyphicon glyphicon-check" aria-hidden="true">&nbsp;</span>
                        Check
                    </a>
                </li>
                <li  class="@(Model=="Print"?"active":"")">
                    <a href="Print">
                        <span class="glyphicon glyphicon-print" aria-hidden="true">&nbsp;</span>
                        Print
                    </a>
                </li>
            </ul>
        </div>
    </nav>

请注意@在括号(之前,而不是在课堂之后。