VS2017中的MVC 3错误:当前上下文中不存在名称“ ViewData”

时间:2018-06-25 14:10:16

标签: c# asp.net-mvc visual-studio asp.net-mvc-3 razor

这也许是一个Intellisense问题,因为它仅出现在upload_max_filesize文件中,并且代码可以正常编译/执行。我不确定。

我最近从VS2010迁移到VS2017,并且正在尝试使用MVC3项目。一切运行正常,但我遇到了与MVC语法相关的多个Intellisense错误。例如,在“视图”>“共享”> _Layout.cshtml中:

post_max_size

给出错误:

.cshtml

这是通过“视图”>“首页”>“ Index.cshtml”设置的:

<title>@ViewData["Title"]</title>

在尝试使用The name 'ViewData' does not exist in the current context 时,也会类似地发生这种情况:

    @{
        ViewData.Title = "Dashboard"; // intellisense error also shows here
    }

我不确定我的dll引用或Web配置是否存在某种问题。我已验证存在以下dll引用:

@Html.Partial

在我的Views / web.config文件中:

'HtmlHelper' does not contain a definition for 'Partial' and no extension method 'Partial' accepting a first argument of type 'HtmlHelper' could be found (are you missing a using directive or an assembly reference?)

还有我的根web.config文件:

System.Web.Mvc - Version 3.0.0.0
System.Web.Razor - Version 2.0.0.0
System.Web.WebPages - Version 1.0.0.0
System.Web.WebPages.Razor - Version 1.0.0.0

3 个答案:

答案 0 :(得分:0)

尽管不能完全确定为什么会这样,但是您应该考虑使用ViewBag来代替ViewData上的动态包装。

ViewBag.Title = "Dashboard"; // in your action method

在您的查看代码中

@ViewBag.Title

答案 1 :(得分:0)

最终使用了摆在here上的解决方案(即使是VS2013):

  

MS表示,对于VS2013,“ Razor的智能感知(CSHTML和VBHTML)文件仅限于HTML标记。”

     

但是,如果在每个.cshtml中添加这两行,则Intellisense将再次适用于VS2013中的MVC3:

@using System.Web.Mvc.Html

@inherits System.Web.Mvc.WebViewPage<dynamic>

  

您可以输入模型的类型,而不是动态的。

答案 2 :(得分:0)

我最近从VS2017迁移到VS2019。我收到以下错误: “名称'ViewData'当前不存在”

我重新运行了Visual Studio启动器,然后单击“修改”。 然后问题解决了!

希望这个答案对您有所帮助。