以下CLR语法在我的aspx页面中正常工作:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Website.MyBasePage`1[HomePageViewModel]" %>
但是这个C#语法没有:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Website.MyBasePage<HomePageViewModel>" %>
注意,我没有使用ASP.NET MVC,但如果使用System.Web.Mvc.ViewPage<>这可以正常工作来自ASP.NET MVC.
我的MyBasePage看起来像这样:
public class MyBasePage<TModel> : Page where TModel : class {
public TModel Model
{
get { return (TModel)HttpContext.Current.Items["model"]; }
}
}
最佳答案 知道你得到的异常会有所帮助,但我怀疑问题是ASP.net不直接支持通用页面基类.它是在MVC中使用一些黑客来实现的.
如果您使用Web窗体,可以自己重复此hack,这应该有所帮助: