【问题标题】:How to pass parameters to @Html.Partial and read them into the View?如何将参数传递给@Html.Partial 并将它们读入视图?
【发布时间】:2016-07-08 13:17:49
【问题描述】:

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

我在几个视图中重复它。 所有视图的代码几乎相同,更改只是为了设置 css 类“活动”以设置<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>

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

非常感谢大家。

【问题讨论】:

  • 构建的时候会报错吗?
  • 构建没有错误

标签: asp.net-mvc


【解决方案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>

请注意@ 在括号( 之前而不是在它之后。

【讨论】:

  • 我会修改问题中的源代码...因为在构建过程中没有任何错误并且它不起作用
  • 好的...我正确修改了源代码。现在我在页面内容中看到“打印字符串”!!!
  • 好的!模型替换为模型......但它的工作方式不同(“打印字符串”现在不可见)
  • @Charles 是我的错,) 的位置打错了,你能再试一次吗?
  • 非常感谢我的朋友!
猜你喜欢
  • 1970-01-01
  • 2012-05-09
  • 2011-12-09
  • 1970-01-01
  • 2011-06-27
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多