【问题标题】:how to check the contents of a viewbag in razor如何在razor中检查viewbag的内容
【发布时间】:2013-05-16 18:44:24
【问题描述】:

有什么方法可以检查 viewbag 的内容,viewbag 在视图中有什么数据。 每次我单击按钮时,我的控制器都可能发送新数据并使用相同命名的 viewbag 发送它。

这里是我的控制器

public ActionResult Details(string IncomRequest, Int Id)
  {
// some code......
    switch (IncomRequest)
    {

        case ("Order"):
            ViewBag.Query = list<Ordr> Ord;
           break;

        case ("Process"):
            ViewBag.Query = lis<Process> pro;
            break;
   }
  return view();

在我看来,我想检查 viewbag 包含的内容 是Ord还是pro。

【问题讨论】:

  • 为什么不直接创建 2 个不同的 ViewBag,一个用于 pro,一个用于 Ord,并检查两者以查看哪个是空的?
  • 你考虑过使用强类型视图吗?
  • 我会创建两个单独的动作,甚至可能是控​​制器,为什么传入IncomRequest,即OrderDetails(int id)ProcessDetails(int id) Single Responsibility

标签: asp.net-mvc razor viewbag


【解决方案1】:

在您看来,您可以这样做:

// if this is true then there's nothing there
@if (ViewBag.Query == null)

你还可以这样做:

// it was set by the "Order" case
@if (ViewBag.Query is List<Ordr>)

【讨论】:

  • 我没有使用强类型视图,而且我的视图没有绑定到任何模型。所以视图知道 List 是什么
  • @FadiAlkadi,这与视图是否被强类型化没有任何关系。您只需要在视图中提供完整的命名空间声明(即我的代码)或将它们作为包含在 web.config 中提供。
【解决方案2】:

是的,你可以

@if(ViewBag.Query is List<Ordr>)
{
    // List<Ordr>
}
else if(ViewBag.Query is List<Process>)
{
    // List<Process>
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多