如何在 C# 中查找 ViewBag 变量列表项的值
How do I find the value of a ViewBag variable list item in C#
我有一个案例,我正在加载一个基于 viewbag 的组合框,其中由 select 列表
填充
因此 select 列表是通过此代码填充的
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 中找到第一个值的值,以便我可以设置我的变量。
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
我有一个案例,我正在加载一个基于 viewbag 的组合框,其中由 select 列表
填充因此 select 列表是通过此代码填充的
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 中找到第一个值的值,以便我可以设置我的变量。
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