代码之家  ›  专栏  ›  技术社区  ›  Marc L

如何在C中找到ViewBag变量列表项的值#

  •  0
  • Marc L  · 技术社区  · 6 年前

    我有一个例子,我正在加载一个基于viewbag的组合框,其中由一个选择列表填充

    所以selectlist是通过这个代码填充的

    private SelectList GetBranches(int? selected = null)
    {
        IPracticeRepository rep = db.GetPracticeRepository();
    
        var curPracticeId = GetUser()?.PracticeId ?? 0;
        var branches = rep.GetById(curPracticeId).Branches;
        var selectList = new List<SelectListItem>();
        if (selected == null) selectList.Add(new SelectListItem() { Selected = true, Text = "", Value = "" });
        foreach (var item in branches)
        {
            if (item.CanCollectReceipts)
                selectList.Add(new SelectListItem() { Value = item.Id.ToString(), Text = item.Name, Selected = selected == item.Id });
        }
        if (selectList.Count == 0) selectList.Add(new SelectListItem() { Selected = true, Text = "", Value = "" });
    
        return new SelectList(selectList, "Value", "Text");
    }
    ...
    
    ViewBag.Branches = GetBranches(invoice.Visit.Branch.Id)
    

    然后我想设置一个变量,根据第一个值是否为 "" 当计数为0时设置。

    if (ViewBag.Branches == "")
    {
        setSite = false;
    }
    else
    {
        setSite = true;
    }
    ViewBag.Setsite = setSite;
    

    很明显上面的代码不起作用,但是我想弄清楚如何在viewbag中找到第一个值的值,以便设置变量。

    0 回复  |  直到 6 年前
        1
  •  1
  •   GSerg    6 年前
    if (((SelectList)ViewBag.Branches).First().Value == "")
    

    var the_list = GetBranches(invoice.Visit.Branch.Id); // Guarantees at least 1 element in the list
    
    ViewBag.Branches = the_list;
    if (the_list.First().Value == "")
    {
      ...
    }
    

    尽管如此,如果您仍然在控制器端,您可能不想保存 setSite

    @{
        bool setSite = (((SelectList)ViewBag.Branches).First().Value != "";
    }
    
    // using setSite in the markup