JNTemplate 文章标签解析

浪淘沙4个月前后端85
using JinianNet.JNTemplate;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using xxtsoft.Common;
using xxtsoft.Core.Common;
namespace xxtsoft.Web.Entry.Pages
{
    public class Index1Model : PageModel
    {
        private readonly SqlSugar.ISqlSugarClient _db;

        public Index1Model(SqlSugar.ISqlSugarClient db)
        {
            this._db = db;
        }
        public IActionResult OnGet()
        {
            //变量标签
            //var template = Engine.CreateTemplate("<p>你好,${name}</p>");
            //template.Set("name", "liugongxun");
            //var result = template.Render();
            //return Content(result);

            ////加载公共文件
            //var templateContent = "${include(\"" + App.HostEnvironment.ContentRootPath + "\\Pages\\Shared\\_top.cshtml\")}";
            //var template = Engine.CreateTemplate(templateContent);
            ////template.Set("name", "liugongxun");
            //var result = template.Render();
            //return Content(result);

            ////调用静态属性
            //var templateContent = "${DateTime.Now.ToString(\"MM-dd\")}";
            //var template = Engine.CreateTemplate(templateContent);
            //template.SetStaticType("DateTime", typeof(DateTime));
            //var result = template.Render();
            //return Content(result);


            //调用函数标签
            //var templateContent = "${TemplateValueHelper.ValTest(\"id,dictname\")}";
            //var templateContent = @"           
            //<ul>
            //    ${for(i=0;i<4;i++)}
            //    <li>${i}</li>
            //    ${end}
            //</ul>
            //调用dt";
            //var templateContent = "${set(id=10)}${id}";

            //var templateContent = "${set(dt=TemplateValueHelper.ValTest(\"id,dictname\"))}${dt.Rows.Count}";




            //var templateContent = @"  
            //    ${set(dt=TemplateValueHelper.ValTest(""id,dictname,dictno""))}
            //<ul>
            //    ${for(i=0;i<dt.Rows.Count;i++)}
            //    <li>${dt.Rows[i][""dictname""].ToString()}--${dt.Rows[i][""dictno""].ToString()}--${dt.Rows[i][""id""].ToString()}</li>
            //    ${end}
            //</ul>
            //";
            //var template = Engine.CreateTemplate(templateContent);
            //template.Set("TemplateValueHelper", new TemplateValueHelper(_db));
            //var result = template.Render();

            //string path = FileHelper.absolutPath("wwwroot/list/aa/1.html");
            //FileHelper.FileWrite(path, result);

            //获取标题
            //string catid = Request.Query["catid"];
            //var templateContent = "${TemplateValueHelper.PageTitle(catid)}";
            //var template = Engine.CreateTemplate(templateContent);
            //template.Set("TemplateValueHelper", new TemplateValueHelper(_db));
            //template.Set("catid", catid);
            //var result = template.Render();


            //获取当前路径
            //string catid = Request.Query["catid"];
            //var templateContent = "${TemplateValueHelper.Location(catid)}";
            //var template = Engine.CreateTemplate(templateContent);
            //template.Set("TemplateValueHelper", new TemplateValueHelper(_db));
            //template.Set("catid", catid);
            //var result = template.Render();

            //获取单页文章
            //string catid = Request.Query["catid"];
            //var templateContent = "${TemplateValueHelper.Getdanye(catid)}";
            //var template = Engine.CreateTemplate(templateContent);
            //template.Set("TemplateValueHelper", new TemplateValueHelper(_db));
            //template.Set("catid", catid);
            //var result = template.Render();

            //获取文章详细          
            //var templateContent = "${ArticleDetail[\"title\"]}${ArticleDetail[\"author\"]}${id}";
            //var template = Engine.CreateTemplate(templateContent);
            //string id = Request.Query["catid"];
            //var ArticleDetail = new  TemplateValueHelper(_db).GetArticleDetail(id);

            //template.Set("ArticleDetail", ArticleDetail);
            //template.Set("id", id);
            //var result = template.Render();

            //文章列表           
            var templateContent = @"  
                ${set(pagesize=10)}
                ${set(dt=TemplateValueHelper.PageList(""article_title"",""id,title,created"",""created desc"",""catid=1"",pagesize,pageindex))}
            <ul>
                ${for(i=0;i<dt.Rows.Count;i++)}
                <li>${dt.Rows[i][""title""].ToString()}--${dt.Rows[i][""id""].ToString()}--${dt.Rows[i][""created""].ToString()}</li>
                ${end}
            </ul>             
            ${pageindex}
            $*总条数*$
            ${set(pagetotal=TemplateValueHelper.pagetotal(""article_title"",""catid=1""))}
            ${pagetotal}
            $*分页代码*$
            ${TemplateValueHelper.PageStr(1,pagetotal,pagesize,1)}          
            ";
            var template = Engine.CreateTemplate(templateContent);
            template.Set("TemplateValueHelper", new TemplateValueHelper(_db));      
            template.Set("pageindex", 1);
         
            var result = template.Render();
            return Content(result);           
        }
    }

}


后端解析

using Dm.util;

using SqlSugar;

using System.Data;
using System.Text;

using xxtsoft.Common;

namespace xxtsoft.Core.Common
{
    /// <summary>
    /// 模板标签处理
    /// </summary>
    public class TemplateValueHelper
    {
        private readonly SqlSugar.ISqlSugarClient _db;

        public TemplateValueHelper(ISqlSugarClient db)
        {
            this._db = db;
        }
        public DataTable ValTest(string fld)
        {
            var dt = _db.Ado.GetDataTable("select " + fld + " from article_class");


            return dt;

        }

        #region 调用任意表的数据标签
        /// <summary>
        /// 调用任意表的数据标签
        /// </summary>
        /// <param name="table">查询表名</param>
        /// <param name="fld">要读取的字段</param>
        /// <param name="sort">用于排序的字段</param>
        /// <param name="row">读取最新几条</param>
        /// <param name="where">查询的条件</param>
        /// <returns></returns>
        public DataTable Loop(string table, string fld, string sort, int row, string where)
        {
            var sql = "select  " + CommHelper.FilterSQL(fld) + " from " + CommHelper.FilterSQL(table) + " where 1=1";

            if (!string.IsNullOrEmpty(where))
            {
                sql += " and " + where;
            }
            if (!string.IsNullOrEmpty(sort))
            {
                sql += " order by  " + sort;
            }
            if (!string.IsNullOrEmpty(row.ToString()))
            {
                sql += " LIMIT " + row;
            }

            var dt = _db.Ado.GetDataTable(sql);


            return dt;

        }
        #endregion

        #region 站点信息
        //读取站点名称
        /// <summary>
        /// 站点名称
        /// </summary>
        /// <returns></returns>
        public string SiteName()
        {
            return CommHelper.GuanLian("pub_pz_site", "1", "webname");
        }
        /// <summary>
        /// 主办单位
        /// </summary>
        /// <returns></returns>
        public string SiteZbdw()
        {
            return CommHelper.GuanLian("pub_pz_site", "1", "zbdw");
        }
        /// <summary>
        /// 统计代码
        /// </summary>
        /// <returns></returns>
        public string SiteStatis()
        {
            return CommHelper.GuanLian("pub_pz_site", "1", "statis");
        }
        #endregion

        #region 获取当前分类的名字
        /// <summary>
        /// 获取当前分类的名字
        /// </summary>
        /// <param name="catid">分类名字</param>
        /// <returns></returns>
        public string PageTitle(string catid)
        {

            if (string.IsNullOrEmpty(catid))
            {
                return "";
            }
            return CommHelper.GuanLian("article_class", CommHelper.FilterSQL(catid), "dictname");
        }

        #endregion

        #region 获取文章当前分类
        /// <summary>
        /// 获取文章当前分类
        /// </summary>
        /// <param name="catid"></param>
        /// <returns></returns>
        public string Location(string catid)
        {
            if (string.IsNullOrEmpty(catid))
            {
                return null;
            }
            string dictno = CommHelper.GuanLian("article_class", CommHelper.FilerForm(catid), "dictno");


            #region 获取各节点字典
            //获取各节点字典
            int l = dictno.Length / 4;
            string _dictno = "";
            for (int i = 1; i <= l; i++)
            {
                _dictno += "'" + CommHelper.CutString(dictno, 4 * i, false) + "',";

            }
            if (!string.IsNullOrEmpty(_dictno))
            {
                _dictno = CommHelper.RepStrRight(_dictno, ",", "");
            }
            #endregion

            string sql = "select * from article_class where dictno in(" + _dictno + ") order by dictno asc";
            var dt = _db.Ado.GetDataTable(sql);
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("<nav aria-label=\"breadcrumb\">");
            sb.AppendLine("  <ol class=\"breadcrumb\">");
            sb.AppendLine("    <li class=\"breadcrumb-item\"><a href=\"/\">首页</a></li>");

            for (int i = 0; i < dt.Rows.Count; i++)
            {

                if (i == dt.Rows.Count - 1)
                {
                    sb.AppendLine("    <li class=\"breadcrumb-item active\" aria-current=\"page\">" + dt.Rows[i]["dictname"].ToString() + "</li>");
                }
                else
                {
                    sb.AppendLine("    <li class=\"breadcrumb-item\"><a href=\"" + SetLink(dt.Rows[i]["id"].toString(), dt.Rows[i]["lmlj"].toString(), dt.Rows[i]["danye"].toString()) + "\">" + dt.Rows[i]["dictname"].ToString() + "</a></li>");
                }
            }

            sb.AppendLine("  </ol>");
            sb.AppendLine("</nav>");

            return sb.toString();
        }

        #region 设置链接
        /// <summary>
        /// 设置链接
        /// </summary>
        /// <param name="id">id</param>
        /// <param name="lmlj">栏目外链</param>
        /// <param name="danye">是否单页</param>
        /// <returns></returns>
        private string SetLink(string id, string lmlj, string danye)
        {
            string Rn = "";

            if (!string.IsNullOrEmpty(lmlj))
            {
                Rn = lmlj;
            }
            else if (danye.ToLower() == "true")
            {
                Rn = "/danye/" + id + ".html";
            }
            else
            {
                Rn = "/list/" + id + "/1.html";
            }

            return Rn;
        }

        #endregion

        #endregion

        #region 读取单页文章
        /// <summary>
        /// 读取单页文章
        /// </summary>
        /// <param name="catid">文章分类</param>
        /// <returns></returns>
        public string Getdanye(string catid)
        {
            _db.Ado.ExecuteCommand("update article_danye set views=views+1 where catid=" + int.Parse(catid));
            return CommHelper.GetFld("article_danye", "article", "catid=" + int.Parse(catid));
        }

        #endregion

        #region 读取文章详细
        /// <summary>
        /// 读取文章详细
        /// </summary>
        /// <param name="id">文章id</param>
        /// <returns></returns>
        public Dictionary<string, string> GetArticleDetail(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return null;
            }

            var dictionary = new Dictionary<string, string>();
            //_db.Ado.ExecuteCommand("update article_title set pv=pv+1 where id=" + id);
            var dt = _db.Ado.GetDataTable("select * from article_title where id=" + int.Parse(id));
            if (dt.Rows.Count > 0)
            {
                dictionary.Add("title", dt.Rows[0]["title"].toString());
                dictionary.Add("source", dt.Rows[0]["ssourceid"].toString());
                dictionary.Add("author", dt.Rows[0]["author"].toString());
                dictionary.Add("created", TimeHelper.ToDataByString(dt.Rows[0]["created"].toString()));


                dictionary.Add("pv", "<script src=\"/ajax?t=detail&p=pv&id=" + SecurityHelper.DesEnc(id) + "\"></script>");
                dictionary.Add("article", dt.Rows[0]["article"].toString());
                dictionary.Add("pre", "<script src=\"/ajax?t=detail&p=pre&id=" + SecurityHelper.DesEnc(id) + "\"></script>");
                dictionary.Add("next", "<script src=\"/ajax.aspx?t=detail&p=next&id=" + SecurityHelper.DesEnc(id) + "\"></script>");
            }
            else
            {
                return null;
            }

            // 你可以根据 id 查询文章详情,并填充字典
            // 例如:dictionary.Add("Title", article.Title);
            return dictionary;
        }


        #endregion

        #region 读取列表分页内容
        /// <summary>
        /// 
        /// </summary>
        /// <param name="tbl">表名</param>
        /// <param name="flds">读取字段:如title,cdt,pv,flg</param>
        /// <param name="orderfld">排序:如id desc</param>
        /// <param name="sqlwhere">搜索条件:如1=1</param>

        /// <param name="pagesize">分页大小:如10</param>
        /// <param name="pageindex">当前页数:如1</param>
        /// 
        /// <returns></returns>
        public DataTable PageList(string tbl, string flds, string orderfld, string sqlwhere, int pagesize = 15, int pageindex = 1)
        {
            string sql = "SELECT " + CommHelper.FilterSQL(flds) + " FROM " + CommHelper.FilterSQL(tbl) + " WHERE " + CommHelper.FilterSQL(sqlwhere) + " ORDER BY " + CommHelper.FilterSQL(orderfld) + " LIMIT " + pagesize + " OFFSET " + pagesize + " * (" + pageindex + " - 1)";
            var dt = _db.Ado.GetDataTable(sql);
            return dt;
        }

       
        /// <summary>
        /// 读取总条数
        /// </summary>
        /// <param name="tbl"></param>
        /// <param name="sqlwhere"></param>
        /// <returns></returns>
        public int pagetotal(string tbl, string sqlwhere)
        {          
           
            return _db.Ado.GetInt("select count(*) from "+tbl+" where "+ sqlwhere);
        }
        #endregion
                
        #region 分页代码显示
        /// <summary>
        /// 分页代码显示
        /// </summary>
        /// <param name="catid">分类id</param>
        /// <param name="TotleNum">总数据量</param>
        /// <param name="NumPerPage">每页显示多少条</param>
        /// <param name="Thepage">当前页</param> 
        /// <returns></returns>
        public string PageStr(int catid, int TotleNum, int NumPerPage, int Thepage)
        {

            StringBuilder sb = new StringBuilder();



            //sb.AppendLine("    <li class=\"page-item\"><a class=\"page-link\" href=\"#\">2</a></li>");
            //sb.AppendLine("    <li class=\"page-item\"><a class=\"page-link\" href=\"#\">3</a></li>");
            //sb.AppendLine("    <li class=\"page-item\">");
            //sb.AppendLine("      <a class=\"page-link\" href=\"#\" aria-label=\"Next\">");
            //sb.AppendLine("        <span aria-hidden=\"true\">&raquo;</span>");
            //sb.AppendLine("      </a>");
            //sb.AppendLine("    </li>");
            //string strTemp = "<div class=\"pagestr\"><div class=\"pagetotal\">";

            sb.AppendLine("<nav aria-label=\"Page navigation example\">");
            sb.AppendLine("  <ul class=\"pagination\">");
            int n;
            int p;
            int ii;

            if (Convert.ToInt32(TotleNum) <= Convert.ToInt32(NumPerPage))
            {
                n = 1;
            }
            if (Convert.ToInt32(TotleNum) % Convert.ToInt32(NumPerPage) == 0)
            {
                n = TotleNum / NumPerPage;
            }
            else
            {
                n = TotleNum / NumPerPage + 1;
            }

            //strTemp += "共 " + TotleNum + " 条记录 页次:" + Thepage + "/" + n + "页 " + NumPerPage + "条/页</div><ul>";

            if (Thepage - 1 % 10 == 0)
                p = (Thepage - 1) / 10;
            else
                p = (Thepage - 1) / 10;

            if (p * 10 > 0)
            {

                sb.AppendLine("    <li class=\"page-item\">");
                sb.AppendLine("      <a class=\"page-link\" href=\"/list/" + catid + "/" + (p * 10).ToString() + ".html\" aria-label=\"Previous\">");
                sb.AppendLine("        <span aria-hidden=\"true\">&laquo;</span>");
                sb.AppendLine("      </a>");
                sb.AppendLine("    </li>");
            }

            //strTemp += "<li class=\"pre\"><a href='/list/" + catid + "/" + (p * 10).ToString() + ".html' title=上十页 >&lt;&lt;</a></li> ";

            int uming_i = 1;

            for (ii = p * 10 + 1; ii <= p * 10 + 10; ii++)
            {
                if (ii == Thepage)
                    sb.AppendLine("    <li class=\"page-item active\"><a class=\"page-link\" href=\"/list/" + catid + "/" + ii.ToString() + ".html\">" + ii + "</a></li>");
                //strTemp += "<li class=\"on\">" + ii + "</li> ";
                else
                    sb.AppendLine("    <li class=\"page-item\"><a class=\"page-link\" href=\"/list/" + catid + "/" + ii.ToString() + ".html\">" + ii + "</a></li>");
                //strTemp += "<li><a href='/list/" +catid+"/"+ii.ToString() + ".html'>" + ii + "</a></li>";

                if (ii == n)
                    break;
                uming_i = uming_i + 1;

            }

            if (ii <= n && uming_i == 11)
            {
                sb.AppendLine("    <li class=\"page-item\">");
                sb.AppendLine("      <a class=\"page-link\" href=\"/list/" + catid + "/" + ii.ToString() + ".html\" aria-label=\"Next\">");
                sb.AppendLine("        <span aria-hidden=\"true\">&raquo;</span>");
                sb.AppendLine("      </a>");
                sb.AppendLine("    </li>");
                //strTemp += "<li class=\"next\"><a href='/list/" + catid + "/" + ii.ToString() + "/' title=下十页>&gt;&gt;</a></li>  ";
            }
            //strTemp += "</ul>";

            sb.AppendLine("  </ul>");
            sb.AppendLine("</nav>");


            return sb.toString();


        }
        #endregion


    }
}


相关文章

asp.net core webapi 调用furion 的webapi json接口

/// <summary> /// 根据学校读取支付科次 /// </summary> /// <returns>&l...

asp.net core 获取url及参数

  var url = $"{Request.Scheme}://{Request.Host}{Request.Path}{Request....

asp.net razor post

asp.net razor post

@page @model xxtsoft.Web.Entry.Pages.qd.IndexModel @{     Layout =&...

返回月份当天日期

  int daysInMonth = DateTime.DaysInMonth(_yf.Year, _yf.Month);...

JNTemplate 模板标签读取dt数据

一、模板标签using JinianNet.JNTemplate; private readonly SqlSugar.ISqlSugarClient _db;...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。