C# 如何在ASP.NET核心布局中将参数传递到顶部导航栏?

C# 如何在ASP.NET核心布局中将参数传递到顶部导航栏?,c#,asp.net-core,model-view-controller,asp.net-core-mvc,C#,Asp.net Core,Model View Controller,Asp.net Core Mvc,在我的视图/Shared/_Layout.cshtml中,以下导航栏位于中: 作为备用方案,我考虑将顶部导航栏从布局中移除,使其成为部分视图或视图组件,并在每个页面上呈现,但在布局时这似乎违反直觉,我想知道是否有一种方法可以只使用我现有的\u布局,并在单击链接时使用要发送的当前视图的ID。您必须显式地将ID参数传递给您的锚定标记,可能正在使用视图包或临时数据 <a class="nav-link text-dark" asp-area="" asp-controller="Client

在我的
视图/Shared/_Layout.cshtml
中,以下导航栏位于
中:



作为备用方案,我考虑将顶部导航栏从布局中移除,使其成为部分视图或视图组件,并在每个页面上呈现,但在布局时这似乎违反直觉,我想知道是否有一种方法可以只使用我现有的
\u布局
,并在单击链接时使用要发送的当前视图的ID。

您必须显式地将
ID
参数传递给您的锚定标记,可能正在使用
视图包
临时数据

<a class="nav-link text-dark" asp-area="" asp-controller="Client" asp-action="Import" asp-route-id="@ViewBag.Id">Import</a>

和。

您的
\u NavbarPartial
视图应如下所示,其中每个操作链接标记帮助器都包含一个
asp route id=“@Model”
属性

@model int // <-- Must contain this

<a class="navbar-brand" asp-area="" asp-controller="Client" asp-action="ClientList" asp-route-id="@Model">Client List</a>

<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                aria-expanded="false" aria-label="Toggle navigation">
     <span class="navbar-toggler-icon"></span>
</button>

<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
            <ul class="navbar-nav flex-grow-1">                        
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-controller="Client" asp-action="Import" asp-route-id="@Model">Import</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-controller="Client" asp-action="Processing" asp-route-id="@Model">Processing</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-controller="Client" asp-action="PostProcessing" asp-route-id="@Model">Post Processing</a>
                </li>                        
            </ul>
 </div> 

我正在考虑将顶部导航栏从布局中移除,使其成为局部视图或视图组件,并在每个页面上呈现它
——它将在每个页面中都可见,就像在布局视图中一样。你能更清楚地说明你真正想要的是什么吗?可能是@ste fu的重复。这不是那个问题的重复。我知道如何将参数传递给局部视图。这不是这个问题所要问的。我之所以提到局部视图,是因为我知道如何做到这一点,如果我无法为布局获取参数,我会使用它,但我宁愿只向布局发送参数,也不愿为我已经拥有的东西生成局部视图。你从那里尝试过答案吗?布局页面不只是另一种视图吗?@TanvirArjel如果我不清楚,很抱歉。如果我不能弄清楚如何让部分视图通过布局动态传递ID,那么创建一个部分视图来实现这一点将是一种回退策略。问题是如何使用布局来存储要发送到这些链接的ID(这些链接的操作在控制器中,但实际链接在布局中,我无法访问模型来获取ID)。看来Viewbag/ViewData或Tempdata可能是我的解决方案。难道没有ASP.NET视图的HTML操作链接吗?(在:
@Html.ActionLink(“link text”、“someaction”、“somecontroller”、new{id=“123”},null)
行中查找的内容,我想您可以像这样将您的id传递给控制器。)@Barrosy如果您使用的是Aspnet Core,那么建议您使用标记帮助器,这是Aspnet CorePerfect解决方案的主要功能之一。接受答案。
@model int // <-- Must contain this

<a class="navbar-brand" asp-area="" asp-controller="Client" asp-action="ClientList" asp-route-id="@Model">Client List</a>

<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                aria-expanded="false" aria-label="Toggle navigation">
     <span class="navbar-toggler-icon"></span>
</button>

<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
            <ul class="navbar-nav flex-grow-1">                        
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-controller="Client" asp-action="Import" asp-route-id="@Model">Import</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-controller="Client" asp-action="Processing" asp-route-id="@Model">Processing</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-controller="Client" asp-action="PostProcessing" asp-route-id="@Model">Post Processing</a>
                </li>                        
            </ul>
 </div> 
<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <partial name="_NavbarPartial" model="1" /> // <-- Pass your id value as model
        </div>
    </nav>
</header>