一部のコードをMVC3プロジェクトからMVC4プロジェクトに移動しようとすると、この問題が発生します。DisplayTemplates
次のように、エリア内にいくつかあります。
MVC Project
--Areas
----Identity
------Controllers
--------MyHomeController.cs
------Models
--------MyHomeViewModel.cs
--------MyEmailAddress.cs
------Views
--------Shared
----------DisplayTemplates
------------MyEmailAddress.cshtml
----------MyHome.cshtml
--------ViewStart.cshtml
--------Web.config
------IdentityAreaRegistration.cs
には、に強く型付けされMyHomeController
たビューを返すアクションがあります。MyHomeViewModelにはプロパティが含まれています。'MyHome.cshtml'ファイル内には、次のものがあります。MyHome.cshtml
MyHomeViewModel
IEnumerable<MyEmailAddress>
@foreach (var email in Model.Emails)
{
@Html.DisplayFor(m => email)
}
ただし、これはMyEmailAddress.cshtmlテンプレートをレンダリングしていません。次の両方で同じ結果:
@foreach (var email in Model.Emails)
{
@Html.DisplayFor(m => email, "MyEmailAddress")
}
@foreach (var email in Model.Emails)
{
@Html.DisplayFor(m => email, "~/Areas/Identity/[rest of path]/MyEmailAddress.cshtml")
}
ただし、MyEmailAddress.cshtml
ファイルをルートWebプロジェクトのViews/Shared/DisplayTemplates
フォルダーに移動すると、このテンプレートを使用してレンダリングされます。
何らかの理由で、DisplayFor HtmlHelperは、エリア固有のViews / Shared / DisplayTemplatesフォルダーを検索していないか、そのフォルダー内で他の何かを検索しています。
私は何が間違っているのですか?これはMVC3で機能しますが、MVC4プロジェクトでは正しく理解できないようです。