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。特に、a を 2 番目のパラメーターとして受け入れるオーバーライドがありますString。この場合、それをレンダリングするために使用する必要があるテンプレートの名前です。またはObject、2 番目のパラメーターとして an を受け取ることができます。この場合、追加のビュー データです。デフォルトのテンプレートに渡す必要があります。

から「文字列」を渡すようなことをすると、次ViewBagのようになります。

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

ViewBag は型指定されていないため、実際にはオブジェクトを渡しています。これはほんの一例ですが、要するに、渡すパラメーターとその型について十分に明示していないということです。

于 2014-02-04T08:57:40.890 に答える