我试图构建这个简单的Foreach循环:
public void SetCurrent(ControllerBase controllerBase)
{
System.Web.Mvc.IValueProvider iv = null;
ControllerBase[] ctrlbase = { ViewBag.samplea, ViewBag.sampleb};
foreach (var ct in ctrlbase)
{
ct.ValueProvider = iv;
}
controllerBase.Equals("current");
}
但是当我尝试运行代码时,它会向我返回错误ct.ValueProvider = iv;
:
对象引用未设置为对象的实例。
这就是我测试函数的方法:
SetCurrent(ViewBag.samplea);
我要做的是设置所有ViewBag to Empty String
或null
并将参数设置为值current
,它看起来像{{1} }}
是否可以使用这个简单的功能?
任何明智的想法都受到高度赞赏。
答案 0 :(得分:1)
1)如果您要清除ViewBag
,我们可以致电
ViewData.Clear();
ViewBag
只是ViewData
附近的wrapper。
2)如果要删除特定项目,可以随时手动执行:
ViewBag.sampleb = null;
更新
3)如果您在key
参数中获得Controlbase
值,则可以执行以下操作:
public void SetCurrent(String Controlbase)
{
SetAllViewBagToNull();
ViewData[Controlbase] = "current";
}
答案 1 :(得分:0)
这是iv的一个临时解决方案:
public void SetCurrent(String Controlbase)
{
SetAllViewBagToNull();
switch (Controlbase)
{
case "samplea":
{
ViewBag.samplea= "current";
break;
}
case "sampleb":
{
ViewBag.sampleb= "current";
break;
}
}
}
public void SetAllViewBagToNull()
{
ViewBag.samplea= "";
ViewBag.sampleb= "";
}
当然是working
,因为我们观察到这是一个manual
编码。