コード例 #1
0
 /// <summary>
 /// 初始化当前页面模板数据
 /// </summary>
 protected override void InitPageTemplate()
 {
     //注册一个自定义函数
     this.Document.SetValue("Page", this);
     this.Document.RegisterGlobalFunction(this.GetNewsUrl);
     this.Document.SetValue("newsdata", NewsDbProvider.GetNewsData("relating"));
 }
コード例 #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="news"></param>
 /// <returns></returns>
 private object GetNewsUrl(object[] news)
 {
     if (news.Length > 0 && news[0] is News)
     {
         return(NewsDbProvider.GetNewsUrl((News)news[0]));
     }
     else
     {
         return(string.Empty);
     }
 }
コード例 #3
0
        /// <summary>
        /// 用于给模板调用的方法
        /// </summary>
        /// <returns></returns>
        public List <News> GetNewsData()
        {
            //获取当前正在呈现数据的标签,也就是正在调用此函数的标签
            Tag    tag  = this.Document.CurrentRenderingTag;
            string type = "relating"; //默认的

            if (tag != null)
            {
                //标签不为null.也就是此函数是通过标签调用的
                type = tag.Attributes.GetValue("dbtype");
            }
            return(NewsDbProvider.GetNewsData(type));
        }
コード例 #4
0
        /// <summary>
        /// 用于给模板调用的方法(静态方法)
        /// </summary>
        /// <returns></returns>
        public static List <News> GetStaticNewsData()
        {
            //获取正在呈现数据的文档
            TemplateDocument document = TemplateDocument.CurrentRenderingDocument;
            string           type     = "relating"; //默认的

            if (document != null)
            {
                if (document.CurrentRenderingTag != null)
                {
                    //正在呈现的标签不为null.也就是此函数是通过标签调用的
                    type = document.CurrentRenderingTag.Attributes.GetValue("dbtype");
                }
            }
            return(NewsDbProvider.GetNewsData(type));
        }
コード例 #5
0
        /// <summary>
        /// 初始化当前页面模板数据
        /// </summary>
        protected override void InitPageTemplate()
        {
            //获取所有名称为topnews的模板块
            ElementCollection <Template> templates = this.Document.GetChildTemplatesByName("topnews");

            foreach (Template template in templates)
            {
                //根据模板块里定义的type属性条件取得新闻数据
                List <News> newsData = NewsDbProvider.GetNewsData(template.Attributes.GetValue("type"));
                //设置变量newsdata的值
                template.Variables.SetValue("newsdata", newsData);

                //取得模板块下Id为newslist的标签(也即是在cnblogs_newsdata.html文件中定义的foreach标签)
                Tag tag = template.GetChildTagById("newslist");
                if (tag is ForEachTag)
                {
                    //如果标签为foreach标签则设置其BeforeRender事件用于设置变量表达式{$:#.news.url}的值
                    tag.BeforeRender += new System.ComponentModel.CancelEventHandler(Tag_BeforeRender);
                }
            }
        }
コード例 #6
0
        /// <summary>
        /// 在标签每次呈现数据前触发的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Tag_BeforeRender(object sender, System.ComponentModel.CancelEventArgs e)
        {
            ForEachTag t = (ForEachTag)sender;

            #region 方法一: 根据foreach标签的Item属性取得变量
            //取得当前项的值(因为foreach标签的数据源是List<News>集合,所以当前项的值类型为News实体)
            News news = (News)t.Item.Value;
            //设置当前项的变量表达式的值.也即是"{$:#.news.url}"变量表达式
            t.Item.SetExpValue("url", NewsDbProvider.GetNewsUrl(news));
            #endregion

            #region 方法二: 直接获取news变量
            //或者也可以直接取得news变量
            //Variable newsVar = t.OwnerTemplate.Variables["news"];
            //News news = (News)newsVar.Value;
            //newsVar.SetExpValue("url", NewsDbProvider.GetNewsUrl(news));
            #endregion

            //当新闻不可见时.你可以取消本次输出
            if (!news.Visible)
            {
                e.Cancel = true;
            }
        }
コード例 #7
0
 /// <summary>
 /// 获取热门的新闻数据
 /// </summary>
 /// <returns></returns>
 public static List <News> GetHotingNews()
 {
     throw new Exception("ddd");
     return(NewsDbProvider.GetNewsData("hoting"));
 }
コード例 #8
0
 /// <summary>
 /// 获取热门的新闻数据
 /// </summary>
 /// <returns></returns>
 public static List <News> GetHotingNews()
 {
     return(NewsDbProvider.GetNewsData("hoting"));
 }