【问题标题】:MVC 5 Migration IssueMVC 5 迁移问题
【发布时间】:2014-02-04 04:50:44
【问题描述】:

我已将我的项目从 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 Migration. Intellisense issues

mvc 3 to mvc 5 migration razor syntax issue

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-migration asp.net-mvc-5.1


    【解决方案1】:

    好的,我终于找到了解决方案。但真的不确定这是否是导致问题的原因。当我查看 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>
    

    【讨论】:

      【解决方案2】:

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

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

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

      你实际上是在传递一个 object 因为 ViewBag 没有被输入。这只是一个示例,但总而言之,您只是没有足够明确地了解您传递的参数以及它们的类型。

      【讨论】:

      • 它不只是 displayfor helper,MVC 中的任何 html helper 都会出现错误。
      猜你喜欢
      • 1970-01-01
      • 2014-01-19
      • 2016-05-22
      • 2021-08-21
      • 1970-01-01
      • 2017-12-11
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多