dot net core 中的布局页面在从索引页面单击时未显示更改

问题描述

我在布局页面上有菜单,我需要点击索引视图上的按钮来启用它们 在“索引”按钮单击时,我调用了使用视图包设置标志的控制器操作,然后如果通过检查布局页面上的条件设置标志,则启用菜单,条件已正确检查但仍未启用菜单,但如果我单击任何其他按钮然后菜单启用

布局.cshtml

 @if (@ViewBag.Enable == "true" || Context.Session.GetString("CustomerCode") == null)
                        {
                            <a href="#OCLegacy" data-toggle="collapse" aria-expanded="false" style="color:gray" class="bg-dark list-group-item list-group-item-action flex-column align-items-start disabled">
                                <div class="d-flex w-100 justify-content-start align-items-center">
                                    <span class="bi bi-diamond-fill fa-fw mr-3"></span>
                                    <span class="menu-collapsed">OC-Legacy</span>
                                    <span class="submenu-icon ml-auto"></span>
                                </div>
                            </a>
                        }

索引.cshtml

 <a asp-action="Index" style="align-self:self-end"  data-id="@customer.CustomerCode"
                          
                           class="btn btn-primary ManageSelect">

从控制器调用索引操作

解决方法

这是一个带有 ViewBag.Enable 的演示。将 @customer.CustomerCode 传递给 action,如果它不为 null,则将 ViewBag.Enable 设置为 true。否则,将 ViewBag.Enable 设置为 false。如果 ViewBag.Enable 为 true,则启用菜单。 布局:

@if (@ViewBag.Enable != "true")
            {
                <a href="#OCLegacy" data-toggle="collapse" aria-expanded="false" style="color:gray" class="bg-dark list-group-item list-group-item-action flex-column align-items-start disabled">
                    <div class="d-flex w-100 justify-content-start align-items-center">
                        <span class="bi bi-diamond-fill fa-fw mr-3"></span>
                        <span class="menu-collapsed">OC-Legacy</span>
                        <span class="submenu-icon ml-auto"></span>
                    </div>
                </a>
            }
            else { 
                <a href="#OCLegacy" data-toggle="collapse" aria-expanded="false" style="color:gray" class="bg-dark list-group-item list-group-item-action flex-column align-items-start">
                    <div class="d-flex w-100 justify-content-start align-items-center">
                        <span class="bi bi-diamond-fill fa-fw mr-3"></span>
                        <span class="menu-collapsed">OC-Legacy</span>
                        <span class="submenu-icon ml-auto"></span>
                    </div>
                </a>
            }

Index(asp-route-id 会将 @customer.CustomerCode 作为参数 id 传递给 action):

<a asp-action="Index" style="align-self:self-end" asp-route-id="@customer.CustomerCode" data-id="@customer.CustomerCode"
                          
                           class="btn btn-primary ManageSelect">

操作:

public IActionResult Index(string id)
{
    if (id != null)
    {
        ViewBag.Enable = "true";
    }
    else
    {
        ViewBag.Enable = "false";
    }
   
    return View();
}

结果: enter image description here