ASP.NET MVC '@modèle dynamique " de ne pas reconnaître les propriétés du Modèle lors de la partielle de la vue est en dossier Partagé

Pas un doublon de: MVC, Razor modèle dynamique, l '"objet" ne contient pas une définition pour 'PropertyName'

Selon les réponses,

Selon David Ebbon, vous ne pouvez pas passer d'un type anonyme dans un
dynamiquement typé, car les types anonymes sont compilés à l'
interne. Depuis le CSHTML vue est compilé dans un ensemble distinct
il ne peut pas accéder à l'anonyme du type de propriétés.

Pourquoi le code ci-dessous - qui aurait devraient jamais travailler - travailler comme je l'avais prévu lorsque la vue partielle se trouve dans "/Home/_Partial.cshtml", mais s'arrête soudainement de fonctionner lorsqu'il est déplacé vers "/Shared/_Partial.cshtml"?

À l'aide de ASP.NET 4.5 (et versions antérieures), le produit le texte "Hello, World!" le navigateur web:

~/Controllers/Contrôleur 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>
}

Toutefois, lorsque le _Partial.cshtml est plutôt déplacé vers ~/Views/Shared/_Partial.cshtml, l'erreur suivante est renvoyée dans _Partial.cshtml (ligne 2):

'object' does not contain a definition for 'ShouldRender'

À l'inspection du Modèle dans le débogueur, je trouve les propriétés suivantes:

Model { Text = Hello, world!, ShouldRender = True }

OriginalL'auteur Alexander Pritchard | 2013-09-24