Не дубликат: Динамическая модель MVC Razor, "объект" не содержит определения для "PropertyName"
Согласно ответам,
Согласно Дэвиду Эббо, вы не можете передавать анонимный тип в динамически типизированное представление, поскольку анонимные типы скомпилированы как внутренний. Поскольку представление CSHTML скомпилировано в отдельную сборку, он не может получить доступ к свойствам анонимного типа.
Почему код ниже - который, как утверждается, никогда не должен работать, работает так, как я ожидал, когда частичный вид находится в "/Home/_Partial.cshtml", но внезапно перестает работать при перемещении в "/Shared/_Partial.cshtml"?
Используя ASP.NET 4.5 (и предыдущие версии), следующее выдает текст "Hello, World!". в веб-браузер:
~/Контроллеры/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 }