【问题标题】:Upgraded to MVC 3: CS0103: The name 'View' does not exist in the current context升级到 MVC 3:CS0103:当前上下文中不存在名称“视图”
【发布时间】:2011-05-23 22:47:43
【问题描述】:

我刚刚更新到 ASP.NET MVC 3 RC2。

每当呈现 cshtml 视图时,我正在处理的示例应用程序都会产生以下错误:

CS0103:当前上下文中不存在名称“视图”

在线失败:

@{
   View.Title = "MyView";
}

...并且在 Razor 文件的代码中遇到 View 的任何其他地方都失败。

我已将 web.config 从新的应用程序视图文件夹复制到我的示例应用程序,但问题仍然存在。

一个全新的应用程序运行没有问题。

我还重建了解决方案,运行 Clean Solution。不开心。

我已经有几天没有处理样本了。所以这可能是一个与RC2无关的问题......

【问题讨论】:

  • 已检查参考,它们似乎是相同的文件版本。 EG:System.Web.Mvc 文件版本:3.11209.0 用于我使用 RC1 开发的示例应用和使用 RC2 创建的新应用

标签: asp.net-mvc razor


【解决方案1】:

它已重命名为“ViewBag”。您可以阅读更多关于 RC1 -> RC2 here

的变化

【讨论】:

  • 谢谢,我忽略了 Scott Guthrie 博客文章的那一点。不知道为什么你觉得这很奇怪——在视图中有显示逻辑很好。大量样本使用它。我认为 ViewBag 是一个可怕的名字,但它比普通的 View 更具描述性。
  • @awrigley 确定在视图中使用显示逻辑没问题,但 ViewBag 旨在成为通常在控制器中设置以在视图中使用的属性的集合......我'我确定你有一个有效的用例,但我不明白你为什么要在视图内的 ViewBag 中设置数据,我只希望从中“读取”。
  • “ViewBag”现在将成为我称呼我不喜欢的人的首选名称。
  • @awrigley 终于重新审视了这个问题;在视图中调用它的原因是将信息(在这种情况下为视图标题)传递回“布局”视图。这当然是合法的。很抱歉我可能造成的混乱
【解决方案2】:

我有同样的问题,但我只是想现在用什么,我最终使用:

@Page.Title = "The title"

它奏效了,虽然我不确定现在的“最佳实践”是什么

另外,我认为 ViewBag 是以前的 ViewModel,而不仅仅是 View

【讨论】:

    【解决方案3】:

    我添加这个以防其他人遇到它。另一个可能的原因是找不到您的布局。我部署到 IIS 并且(在注释掉有问题的行之后)发现在 web 部署期间没有复制布局。就我而言,这是因为布局的 Build Action 已从 Content 更改为 None。

    编辑:事实上,我已经安装了 MVC 3 RC。以上只是一个不同的症状。部署机器具有暴露问题的 RTM。正如 awrigley 所说,它现在被称为 ViewBag。

    【讨论】:

    • 谢谢,但我的问题是将属性重命名为 ViewBag。
    猜你喜欢
    • 2021-10-31
    • 2017-03-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2011-09-26
    相关资源
    最近更新 更多