Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有附加类型参数的自定义WebViewPage_C#_Asp.net_Generics_Inheritance_Razor - Fatal编程技术网

C# 带有附加类型参数的自定义WebViewPage

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似乎不起作用,因为

默认情况下,MVC4使用
System.Web.Mvc.WebViewPage
作为所有页面的基类,这些页面公开在Razor视图中的任何位置使用的属性,如helpers
Html
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>
{
}