将所有 ViewBag 放入 Array List 并设置为 Null
Getting all ViewBag into Array List and Set to Null
我正在尝试构建这个简单的 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");
}
但是当我尝试 运行 代码时 returns 这部分我出错了 ct.ValueProvider = iv;
:
Object reference not set to an instance of an object.
这是我测试函数的方式:
SetCurrent(ViewBag.samplea);
我想要做的是设置所有 ViewBag to Empty String
或 null
并将参数值设置为 current
,它看起来像 controllerBase="current"
。
是否可以使用这个简单的功能?
非常感谢任何好主意。
这是我制定的临时解决方案:
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
编码。
1) 如果要清除ViewBag
,我们可以调用
ViewData.Clear();
ViewBag
只是 ViewData
周围的 wrapper。
2) 如果您想删除特定项目,您始终可以手动执行:
ViewBag.sampleb = null;
更新:
3) 如果您在 Controlbase
参数中获取 key
值,您可以这样做:
public void SetCurrent(String Controlbase)
{
SetAllViewBagToNull();
ViewData[Controlbase] = "current";
}
我正在尝试构建这个简单的 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");
}
但是当我尝试 运行 代码时 returns 这部分我出错了 ct.ValueProvider = iv;
:
Object reference not set to an instance of an object.
这是我测试函数的方式:
SetCurrent(ViewBag.samplea);
我想要做的是设置所有 ViewBag to Empty String
或 null
并将参数值设置为 current
,它看起来像 controllerBase="current"
。
是否可以使用这个简单的功能?
非常感谢任何好主意。
这是我制定的临时解决方案:
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
编码。
1) 如果要清除ViewBag
,我们可以调用
ViewData.Clear();
ViewBag
只是 ViewData
周围的 wrapper。
2) 如果您想删除特定项目,您始终可以手动执行:
ViewBag.sampleb = null;
更新:
3) 如果您在 Controlbase
参数中获取 key
值,您可以这样做:
public void SetCurrent(String Controlbase)
{
SetAllViewBagToNull();
ViewData[Controlbase] = "current";
}