j'essaie de inhérant de ViewPage comme le montre cette question Inheriting from ViewPageHériter des forces ViewPage de coulée explicite du modèle vu
Mais je reçois un
compilateur Message d'erreur: CS1061: « objet » ne contiennent une définition pour « spot » et aucune méthode d'extension « spot » accepter un premier argument de type « objet » est introuvable (vous manque une directive à l'aide ou une référence d'assemblage?)
Mon ViewPage, normalement je peut faire Model.Ch ildProperty (Spot) quand j'hérite directement de ViewPage, donc je le fais aussi ici. Mais ça échoue.
<%@ Page Language="C#" Inherits="Company.Site.ViewPageBase<WebSite.Models.SpotEntity>" %>
<h1><%= Html.Encode(Model.Spot.Title) %></h1>
Pour le faire fonctionner correctement, je dois faire comme ceci:
<%@ Page Language="C#" Inherits="Company.Site.ViewPageBase<WebSite.Models.SpotEntity>" %>
<h1><%= Html.Encode(((WebSite.Models.SpotEntity)Model).Spot.Title) %></h1>
Voici mes classes:
namespace Company.Site
{
public class ViewPageBase<TModel> : Company.Site.ViewPageBase where TModel:class
{
private ViewDataDictionary<TModel> _viewData;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public new ViewDataDictionary<TModel> ViewData
{
get
{
if (_viewData == null)
{
SetViewData(new ViewDataDictionary<TModel>());
}
return _viewData;
}
set
{
SetViewData(value);
}
}
protected override void SetViewData(ViewDataDictionary viewData)
{
_viewData = new ViewDataDictionary<TModel>(viewData);
base.SetViewData(_viewData);
}
}
public class ViewPageBase : System.Web.Mvc.ViewPage
{
}
}
Alors, comment puis-je faire fonctionner sans le casting explicite ?
Si pas votre ViewPageBase Hériter System.Web.Mvc.ViewPage ? –
Jab