1

我已将我的项目从 MVC 4.0 迁移到 MVC 5.1。我已经按照这里提到的所有步骤 http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to -aspnet-mvc-5-and-web-api-2

我已经安装了 Vs 2013 SP1。

我的项目编译没有任何问题并按预期运行。但是当我打开任何 .cshtml 文件时,我看到以下错误

The type arguments for method 'System.Web.Mvc.Html.DisplayExtensions.DisplayFor<TModel,TValue>(System.Web.Mvc.HtmlHelper<TModel>, 
  System.Linq.Expressions.Expression<System.Func<TModel,TValue>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

我尝试了以下链接,没有运气。

MVC 5 -> MVC 5.1 迁移。智能感知问题

mvc 3 到 mvc 5 迁移剃刀语法问题

任何想法?

4

2 回答 2

2

好的,最后我找到了解决方案。但真的不确定这是否是导致问题的原因。当我查看 web.config 文件时,所有的dependentAssembly 旧版本都以 0.0.0.0 开头。当我创建一个全新的 MVC 5 项目时,该部分从 1.0.0.0 开始,当我更改它们时,上面提到的错误就消失了。

但我仍然不相信这个解决方案,如果有人找到根本原因,它会帮助我们。

<dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
于 2014-02-04T16:52:32.590 回答
0

这意味着您将不明确的参数传递给DisplayFor. 特别是有一个接受 aString作为第二个参数的覆盖,在这种情况下,它是应该用于呈现它的模板的名称,或者它可以将 aObject作为第二个参数,在这种情况下,它是额外的视图数据应该传递给默认模板。

如果您执行类似从 传递“字符串”之类的操作ViewBag,例如:

@Html.DisplayFor(m => m.Something, ViewBag.UseThisTemplate)

您实际上是在传递一个对象,因为没有输入 ViewBag。这只是一个示例,但总而言之,您只是对您传递的参数及其类型不够明确。

于 2014-02-04T08:57:40.890 回答