Visual Studio 2013中有关更新到MVC 5的各种错误

时间:2018-02-19 15:21:32

标签: c# asp.net-mvc-4 asp.net-mvc-5 .net-4.0 .net-4.6

我最近将项目从.Net 4.0更新到.Net 4.6,并决定从MVC 4更新到MVC 5.我更新了所有NuGet包,所有项目都构建和编译,但是如果我打开任何.cshtml文件,我可以看到ViewBag.Title带有下划线,并显示错误:

  

错误1无法找到编译动态表达式所需的一种或多种类型。你错过了参考吗?



我还得到另一个错误(请注意下面的图片和下面引用块中的错误是相关的):

enter image description here

  

错误2方法' System.Web.Mvc.Html.SelectExtensions.DropDownListFor的类型参数(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>,System.Collections.Generic.IEnumerable ,字符串)'无法从使用中推断出来。尝试明确指定类型参数。

上述错误中的问题是Html.DropDownListFor无法识别m参数并认为它是动态的,而不是。我在.cshtml页面的顶部有@model CallStatisticsModel。引用块包含完整的错误描述。

我很清楚像这样的问题之前已经发布(并已经解决)了,我已经尝试过(最近8天)找到解决方案并测试出对其他人有什么用处,但是有相同的问题,但是没有运气。我尝试过,包括:

  • 卸载并安装与MVC,Razor和WebPages相关的NuGet包
  • 仔细检查并三次检查web.config和/Views/web.config中的版本号是否正确
  • 检查了相关.cshtml文件的.csproj文件是否引用了正确的MVC,Razor和WebPages引用
  • 关注此guide
  • 用Google搜索(很多)
  • 尝试重建项目本身和整个解决方案
  • 重新打开Visual Studio(2013)

任何对正确方向的建议,评论或观点都会非常感激,因为这对我来说已经是一个很大的问题了一个多星期了。

提前谢谢大家!

1 个答案:

答案 0 :(得分:0)

这个post使得错误和红色下划线在Visual Studio中消失,即使Html.DropDownListFor仍然认为传递的对象是动态的。

我现在必须解决这个问题。