Visual Studio 如何从模型更新共享视图adminheader.cshtml

h6my8fg2  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(89)

我在共享的adminheader.cshtl视图中添加了一个下拉列表,它需要根据表中的数据进行动态更新。因此,当我使用另一个视图(如routeplan.cshtml)时,我从使用routeplanmodel的routeplancontroller加载视图。接下来我需要一个adminheader.cshtml的控制器,这会让人感到困惑。除了加载routeplanmodel之外,从routeplancontroller更新adminheadermodel.cs和adminheader.cshtml的最佳方法是什么?
这是adminheader的模型

public class AdminHeaderModel
{
    public string UserId { get; set; } = null!;
    public string Domain { get; set; } = null!;
    public string Link_Type { get; set; } = null!;
    public string Icon { get; set; } = null!;
}

这是要加载到adminheader.cshtml中的下拉列表的代码

@foreach (AdminHeaderModel hdr in Model)
{
    <div class="dropdown-item light-box-container account selected" rel=".com" data-id=@hdr.DataId>
       <div class="account-info">
          <img src=@hdr.Icon>
          <span class="account-name">@hdr.Domain</span>
       </div>
       <div class="account-actions">
          if (hdr.Link_Type == "0")
          {
               <div class="account-status pass">Connected</div>
               <div class="account-select"><i class="fas fa-check-circle"></i></div>
          }
          else
          {
               <div class="account-status warn"><i class="fas fa-exclamation"></i>Connect</div>
               <div class="account-select"><i class="far fa-check-circle"></i></div>
          }
       </div>                
    </div> 
 }

有人能帮我找出最简单的方法来加载我的adminheadermodel从我的routeplancontroller或如果我需要一个adminheadercontroller,如何实现它。

ki0zmccv

ki0zmccv1#

如果你想让你的adminheader.cshtml从数据库动态更新数据,你可以使用视图组件来实现它。
首先创建一个名为ViewComponents的文件夹,然后在该文件夹中创建一个名为AdminheaderViewComponent的类。

public class AdminheaderViewComponent : ViewComponent
    {
        //inject your dbcontext into it.
        private readonly ApplicationDbContext _context;
        public AdminheaderViewComponent(ApplicationDbContext dbContext)
        {
            _context = dbContext;
        }

        public IViewComponentResult Invoke()
        {
            //from your view code, adminheader.cshtml seems to receive list of AdminHeaderModel, So i return List<AdminHeaderModel> to this view.
            var resut = _context.adminHeaderModels.ToList();
            return View("adminheader",resut);
        }
    }

把你的adminheader.cshtml放在这个结构下。

使用@await Component.InvokeAsync("Adminheader")在其他页面调用adminheader.cshtml

Gif Demo

从上面的gif演示中,我在index.cshtml中调用adminheader.cshtml,当我在index.cshtml中插入一个AdminHeaderModel到数据库中时,adminheader.cshtml将动态更新数据库中的数据。希望这个demo可以帮助你解决这个问题。

相关问题