首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继承自ViewPage

继承自ViewPage
EN

Stack Overflow用户
提问于 2008-12-16 05:03:40
回答 3查看 1.8K关注 0票数 4

可以同时从ViewPage和ViewPage继承吗?或者我必须同时实现这两个。目前,这就是我为ViewPage准备的。我是否需要重复自己,并对ViewPage执行相同的操作??

代码语言:javascript
复制
    public class BaseViewPage : ViewPage
    {
        public bool LoggedIn
        {
            get
            {
                if (ViewContext.Controller is BaseController)
                    return ((BaseController)ViewContext.Controller).LoggedOn;
                else
                    return false;
            }
        }
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-12-16 06:21:49

创建两个版本:

代码语言:javascript
复制
public class BaseViewPage : ViewPage
{
     // put your custom code here
}

public class BaseViewPage<TModel> : BaseViewPage where TModel : class
{
    // code borrowed from MVC source

    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);
    }
}

然后

代码语言:javascript
复制
public class MyCustomView : BaseViewPage
{
}

or

public class MyCustomView : BaseViewPage<MyCustomViewData>
{
}
票数 3
EN

Stack Overflow用户

发布于 2008-12-16 09:25:58

根据你做事情的方式,你可能想要看一下

代码语言:javascript
复制
ViewContext.HttpContext.Request.IsAuthenticated

这可能会为您节省一些时间,而不是扩展ViewPage类。

如果您想要一些其他数据,您可以向提供数据的类之一编写一个扩展方法。例如,如果LoggedIn存储在会话中,您可以扩展上下文以提供一个IsLoggedIn() in方法。

编辑:

当您扩展一个在基视图和强类型视图中都可用的类时,它将在两者中都可用。唯一的另一种方法是如上所述地重新实现强类型版本。

票数 1
EN

Stack Overflow用户

发布于 2008-12-22 23:41:55

我不会把它放在视图中,相反,我会把它作为ViewModel的一个属性(拥有一个BaseViewModel)。它将更容易测试,并确保您不会在将业务逻辑放入视图的过程中走下坡路。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/370500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档