【问题标题】:How can I access viewbag in a class library?如何访问类库中的 viewbag?
【发布时间】:2013-09-11 15:21:40
【问题描述】:

我有一个包含类库和 mvc 项目的解决方案。

我需要在类库中有一个改变 viewbag 的方法。但我无法从类库项目中访问 viewbag。

我该怎么办?

【问题讨论】:

  • 试图在类库中使用 viewbag 是一个糟糕的设计。 viewbag 用于在控制器和视图之间传递信息
  • 其实我想用 viewbag 来做一个警报类。警报类中的方法将填充一个视图包,如果有特定的视图包,则在我的布局中它会写入 HTML。你知道更好的方法吗?

标签: asp.net-mvc class-library viewbag


【解决方案1】:

你不能。 ViewBags 不扩展任何可以作为参数传递的东西。我专门指的是 viewbag 本身,而不是变量属性。您可以将它们作为对象传递。不过,您还有其他选择。您可以将 ViewBag 替换为会话变量。会话变量可以通过像这样引用它们直接在模型内部访问:

System.Web.HttpContext.Current.Session["error"] = "error!";

当然,您可以轻松地在索引页面或控制器中引用它。

【讨论】:

    【解决方案2】:

    您是否尝试过将 Viewbag 传递给方法?

    您在 MVC 项目中在哪里使用类库?

    更新:您正在从控制器调用类库

    这是一个示例,如果您的 viewbag 用于冰淇淋并且您的类库计算价格。

    1. 在控制器和 viewbag 中设置为巧克力。
    2. 调用类库并传递Viewbag.Icecream.ToString()
    3. 从类库“$1.50”返回
    4. 将返回的数据传递给视图

    【讨论】:

    • 我无法将 viewbag 传递给方法。因为它没有二传手。我无法理解第二个问题!
    • 您从 mvc 项目中的什么方法调用类库项目。从控制器?从一个角度看?来自其他班级?
    猜你喜欢
    • 2012-04-17
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2019-07-24
    • 2011-10-23
    • 2013-12-30
    • 1970-01-01
    相关资源
    最近更新 更多