C# 带有附加类型参数的自定义WebViewPage
默认情况下,MVC4使用C# 带有附加类型参数的自定义WebViewPage,c#,asp.net,generics,inheritance,razor,C#,Asp.net,Generics,Inheritance,Razor,默认情况下,MVC4使用System.Web.Mvc.WebViewPage作为所有页面的基类,这些页面公开在Razor视图中的任何位置使用的属性,如helpersHtml和Ajax 我所有的型号都继承自泛型类型,例如 MyModel : BaseModel<SomeComplexType> 然后可以在任何视图中像@MyGenericProperty.CustomValue一样访问它,与@Html相同 将第二个参数添加到MyViewPage:WebViewPage似乎不起作用,因为
System.Web.Mvc.WebViewPage
作为所有页面的基类,这些页面公开在Razor视图中的任何位置使用的属性,如helpersHtml
和Ajax
我所有的型号
都继承自泛型类型,例如
MyModel : BaseModel<SomeComplexType>
然后可以在任何视图中像@MyGenericProperty.CustomValue
一样访问它,与@Html
相同
将第二个参数添加到MyViewPage:WebViewPage
似乎不起作用,因为每个视图现在都不知道@Html
或@Model
也许通过反射、注射或其他魔法
编辑1
FrameworkWebViewPage.cshtml
public class FrameworkWebViewPage : WebViewPage
{
public override void Execute()
{
}
}
它是普通的朋友(有两个参数的朋友)
以防万一,这是视图模型的实现:
public class HomeIndexGetResponse : BaseResponse<HomeIndexGetViewModel>
{
}
公共类HomeIndexGetResponse:BaseResponse
{
}
结束编辑1只要您的web视图继承自WebViewPage
,我看不出任何不起作用的原因
向MyViewPage添加第二个参数:WebViewPage似乎不起作用,因为现在每个视图都不知道@Html或@Model
@MyGeneicProperty在这种情况下有效吗?您是否看到任何编译错误?您可以尝试将.csproj文件中的
设置为true,并查看是否出现编译错误
我知道这是很久以前发布的,但这个问题有没有得到回答?我还对为自定义WebViewPage使用2个类型参数感兴趣。
public class FrameworkWebViewPage : WebViewPage
{
public override void Execute()
{
}
}
public class FrameworkWebViewPage<TModel, TViewModel> : WebViewPage<TModel> where TModel : BaseResponse<TViewModel> where TViewModel : BaseViewModel
{
protected TViewModel ViewModel { get { return Model.ViewModel; } }
public override void Execute()
{
}
}
Compiler Error Message: CS0308: The non-generic type 'GenericViewModel.Framework.Pages.FrameworkWebViewPage' cannot be used with type arguments
public class HomeIndexGetResponse : BaseResponse<HomeIndexGetViewModel>
{
}