Я пытаюсь наследовать от ViewPage, как показано в этом вопросе Наследование от ViewPage
Но я получаю
Сообщение об ошибке компилятора: CS1061: «объект» не содержит определения для «Spot» и не может быть найден метод расширения «Spot», принимающий первый аргумент типа «объект» (отсутствует директива using или сборка ссылка?)
Моя страница просмотра, обычно я могу использовать Model.ChildProperty (Spot), когда я наследую от ViewPage напрямую, поэтому я делаю это и здесь. Но это не удается.
<%@ Page Language="C#" Inherits="Company.Site.ViewPageBase<WebSite.Models.SpotEntity>" %>
<h1><%= Html.Encode(Model.Spot.Title) %></h1>
Чтобы он работал правильно, я должен сделать так:
<%@ Page Language="C#" Inherits="Company.Site.ViewPageBase<WebSite.Models.SpotEntity>" %>
<h1><%= Html.Encode(((WebSite.Models.SpotEntity)Model).Spot.Title) %></h1>
Вот мои занятия:
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
{
}
}
Так как мне заставить его работать без явного приведения?