为了账号安全,请及时绑定邮箱和手机立即绑定

检查 MVC 中 ViewBag 的 bool 值

检查 MVC 中 ViewBag 的 bool 值

莫回无 2023-09-25 16:51:34
我有一个控制器方法,可以创建这样的 ViewBag  foreach (Site s in sites)            {                              var OffReportRows = new Queue<List<string>>();                ViewBag.showColumns = false;                if (osiTotal[s.ID] > 0) {                ViewBag.showColumns = true;                OffReportRows.Enqueue(new List<string>                {                    "Parts",                    "",                    "",                    osiPartCost[s.ID].ToString("C2"),                    "",                    "",                    osiPartCost[s.ID].ToString("C2")                });             }以及一个检查 ViewBag 值是否为 true 的视图页面    @foreach (Site s in sites)        {            if( ViewBag.showColumns == true) {            <tr>                <td style="font-weight : bold;">@s.Name</td>                <td></td>                <td></td>                <td style="font-weight : bold;">Average Cost</td>                <td></td>                <td></td>                <td style="font-weight : bold;">Average Cost With Labour</td>            </tr>             }但即使总数为 0,它仍然总是返回列。我该如何解决这个问题?
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您好,根据您的问题我的理解并根据您的要求。我建议你提到下面的事情


创建一个视图模型,如下所述


public class siteViewModel

{

   public int SiteId {get;set;}

   public Bool ShowColumn {get;set;}

}

创建一个列表并设置到站点 ID 的映射,然后将对象添加到控制器中的列表中,如下所示。


List<siteViewModel> siteData = new List<siteViewModel>();

foreach (Site s in sites)

{

    var OffReportRows = new Queue<List<string>>();

    if (osiTotal[s.ID] > 0)

    {

         // your OffReportRows related code here

         siteData.Add(new siteViewModel() {SiteId =s.ID,ShowColumn =true });

    }

    else

    {

         siteData.Add(new siteViewModel() {SiteId =s.ID,ShowColumn =false });

    }

}

viewbag.MapData = siteData;

AT View端做如下修改


@{

     List<siteViewModel> data = (List<siteViewModel>)viewbag.MapData;

}


@foreach (Site s in sites)

{

    if(data.Any(a=> a.SiteId==s.ID && a.ShowColumn)) 

    {

      <tr>

            <td style="font-weight : bold;">@s.Name</td>

             // add you fields as per requirements

      </tr>

    }

    else

    {

       // do as per requirements

    }

}


查看完整回答
反对 回复 2023-09-25
  • 1 回答
  • 0 关注
  • 38 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信