我有一个叫做BaseClass的类,它包含一些适用于整个网站的逻辑。
为了创建强类型视图,我们需要从System.Web.Mvc.ViewPage泛型类继承该页面。但在我们的例子中,我必须从中继承BaseClass System.Web.Mvc.ViewPage应用一些常用设置,但BaseClass应继承自System.Web.Mvc.ViewPage<>通用版本。但我不能从System.Web.Mvc.ViewPage<>继承BaseClass。因为它也将改变其他类。所以我又创建了一个类BaseClass<>从System.Web.Mvc.ViewPage继承它<>并在BaseClass<>中复制了BaseClass的整个代码。但BaseClass中的代码由其他团队控制,因此它会经常更改,因此我的BaseClass<>应该与BaseClass同步。请帮我消除代码重复或任何其他方法来制作强类型视图。
由于 Ashwani
答案 0 :(得分:1)
...哎哟
我不确定您在BaseClass中拥有什么。但我认为最好的选择是创建一个BaseViewModel(可能你的BaseClass是BaseViewModel>然后为每个页面创建特定的ViewModel(继承自BaseViewModel)。
例如,您的ViewModel应如下所示:
public abstract class BaseViewModel
{
public string SiteTitle {get;set;}
public int SomeProperty{get;set;}
}
public class UserViewModel: BaseViewModel
{
public string UserName{get;set;}
public string Email{get;set;}
}
你应该像这样创建强类型视图:
System.Web.Mvc.ViewPage<UserViewModel>
您可以查看AutoMapper,简化从自定义类到ViewModel的映射过程。
干杯
答案 1 :(得分:1)
好的......您似乎无法更改此BaseClass
用于您的观看次数。
重复ViewPage<TModel>
的逻辑怎么样?看看asp.net mvc源代码中的ViewPage`1.cs file并复制它。那将是最简单的方式......
E.g。
public class BaseClass : ViewPage
{
//Custom logic for africa here
}
public class BaseClass<TModel> : BaseClass
{
//Copy and paste all the code from ViewPage`1.cs
//It's not much - about 50 lines.
}
HTHS,
查尔斯
聚苯乙烯。源代码的链接适用于asp.net mvc 2
答案 2 :(得分:0)