次の複製ではありません: MVC Razor 動的モデル、'object' には 'PropertyName' の定義が含まれていません
そこでの回答によると、
David Ebbo によると、匿名型は内部としてコンパイルされるため、匿名型を動的に型指定されたビューに渡すことはできません。CSHTML ビューは別のアセンブリにコンパイルされるため、匿名型のプロパティにアクセスできません。
部分ビューが "/Home/_Partial.cshtml" にあるときに期待どおりに動作するはずの以下のコードが、"/Shared/_Partial.cshtml" に移動すると突然動作しなくなるのはなぜですか?
ASP.NET 4.5 (および以前のバージョン) を使用すると、次のようにテキスト "Hello, World!" が生成されます。ウェブブラウザに:
~/Controllers/HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace TestDynamicModel.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
~/Views/Home/Index.cshtml
@Html.Partial("_Partial", new { Text = "Hello, world!", ShouldRender = true } )
~/Views/Home/_Partial.cshtml
@model dynamic
@if (!Model.ShouldRender)
{
<p>Nothing to see here!</p>
}
else
{
<p>@Model.Text</p>
}
ただし、代わりに _Partial.cshtml を ~/Views/Shared/_Partial.cshtml に移動すると、_Partial.cshtml で次のエラーがスローされます (2 行目)。
'object' does not contain a definition for 'ShouldRender'
デバッガーでモデルを調べると、次のプロパティが見つかります。
Model { Text = Hello, world!, ShouldRender = True }