zoukankan      html  css  js  c++  java
  • [c#] [一般] 说说我理解的cms

    我所理解的cms:

    简单的说:无非就是后台获取数据替换前台的自定义标签;

    但怎么设计的更合理化就有很多的版本,我自己也在尝试,整了两套东西出来,基准基本一致;

    一.以js为主或jquery为主  html版本

      js的话主要分这几个步骤

       1.纯html中添加一些维属性 如下  自定义了 rule/obj/field/et/label等等 代表的意思呢

          obj:表名;filed:字段名;et:字段类型  其他的就不说了

           申请日期
                            </td>
                            <td class="tdContent" colspan="1">
                                <input type="hidden" name="textfield2" rule="GE|now" obj="DBNeedError" field="AppTime"
                                    et="datetime" rt="label"  />
                            </td>

        2.定义完成后 当然要生成真正的html了,首先需要从后台获得数据,我这里直接用ajax action过去了 怎么过去的大家随意

      $.ajax({ url: "/DataRequirementLoder.data?rnd=" + Math.random(), data: { PKID: Request["PKID"] }, success: function (result) {

       3.后台获取数据

     [DataLoader(Uri = "DataRequirementLoder")]
            public class DataRequirementLoder : BaseFun, IDataLoader
            {、
    }

      4.这样基本上就算是一个循环了 其他类似 最后就看你怎么处理了,可以用json传值过去  增删改查基本上都类似 可以自定义做成公共的~

    二. c#后台为主 服务器控件类型的

       1.前台基本类似 也是自定义一些维属性 这里不做代码呈现

       2.获取后台原始数据 [前台代码]  这里加了一个按照表头排序的功能 大家随意

      function getdb(guid, sort) {
                if (sort != "") {
                    sort = "[" + sort + "]";
                    if (sortdir == " desc ") {
                        sortdir = " asc ";
                        sort += sortdir;
                    }
                    else {
                        sortdir = " desc ";
                        sort += sortdir;
                    }
                }
                $.ajax({
                    type: "get",
                    async: true,
                    dataType: "html",
                    data: "d",
                    url: "getajax.aspx?oper=leftmenu&type=gets&rnd=" + Math.random() + "&sort=" + sort,
                    error: function (XmlHttpRequest, textStatus, errorThrown) { alert(XmlHttpRequest.responseText); },
                    success: function (d) {
                        $("#gettables").html(d);
                    }
                });
    
            }

      3.后台获取数据源  这个就比较简单了 看2前台就知道了 这个获取数据源就简单多了  这里简单处理了下 后台直接拼接的html标签 输出到前台
      Response.Write(i.ToString());

      4.给大家再贴上c# 保存的公共方法吧~ 当然更新其实也是类似的  这个一般写框架的时候经常用到 放到基类里就行了 原理就是 循环当前page页面中所有的控件  依次比较 保存到某个地方 然后根据字段或值 拼写成字符串  下面是核心代码

     private void ControlValues(Control ctrl)
            {
                DataField = "";
                switch (ctrl.ToString())
                {
                    case "System.Web.UI.WebControls.TextBox":
                        Value = ((TextBox)ctrl).Text;
                        DataField = ((TextBox)ctrl).Attributes["DataField"];
                        break;
                    case "System.Web.UI.WebControls.Label":
                        Value = ((Label)ctrl).Text;
                        DataField = ((Label)ctrl).Attributes["DataField"];
                        break;
    
                    case "System.Web.UI.WebControls.DropDownList":
    
                        Value = ((DropDownList)ctrl).SelectedValue;
                        DataField = ((DropDownList)ctrl).Attributes["DataField"];
    
                        break;
                    case "System.Web.UI.HtmlControls.HtmlInputText":
                        Value = ((HtmlInputText)ctrl).Value;
                        DataField = ((HtmlInputText)ctrl).Attributes["DataField"];
    
                        break;
                    case "System.Web.UI.HtmlControls.HtmlSelect":
    
                        Value = ((HtmlSelect)ctrl).Value;
                        DataField = ((HtmlSelect)ctrl).Attributes["DataField"];
    
                        break;
                    case "System.Web.UI.HtmlControls.HtmlInputHidden":
    
                        Value = ((HtmlInputHidden)ctrl).Value;
                        DataField = ((HtmlInputHidden)ctrl).Attributes["DataField"];
    
                        break;
                    case "System.Web.UI.HtmlControls.HtmlTextArea":
    
                        Value = ((HtmlTextArea)ctrl).Value;
                        DataField = ((HtmlTextArea)ctrl).Attributes["DataField"];
    
                        break;
    
                    case "System.Web.UI.WebControls.RadioButtonList":
    
                        Value = ((RadioButtonList)ctrl).SelectedValue;
                        DataField = ((RadioButtonList)ctrl).Attributes["DataField"];
    
                        break;
                    case "System.Web.UI.WebControls.CheckBox":
                        if (((CheckBox)ctrl).Checked == true)
                        {
                            Value = "1";
                        }
                        else
                        {
                            Value = "0";
                        }
                        DataField = ((CheckBox)ctrl).Attributes["DataField"];
                        break;
                    case "System.Web.UI.WebControls.CheckBoxList":
                        System.Web.UI.WebControls.CheckBoxList chklist = (System.Web.UI.WebControls.CheckBoxList)ctrl;
    
                        for (int i = 0; i < chklist.Items.Count; i++)
                        {
                            if (chklist.Items[i].Selected)
                                Value += chklist.Items[i].Value + ";";
                        }
                        DataField = ((CheckBoxList)ctrl).Attributes["DataField"];
    
                        break;
                }
                if (DataField != "" && DataField != null)
                {
                    AddTable(DataField, Value);
                }
            }

    ok  这样就算可以了,我所能理解的也就理解到这,欢迎大家指正批评,谢谢~

  • 相关阅读:
    BZOJ 3811: 玛里苟斯 线性基
    HDU 3949 XOR 线性基
    BZOJ 2115: [Wc2011] Xor 线性基 dfs
    BZOJ 3963 HDU3842 [WF2011]MachineWorks cdq分治 斜率优化 dp
    BZOJ 3262: 陌上花开 cdq分治 树状数组
    BZOJ 2653: middle 主席树 二分
    BZOJ 3524 [Poi2014]Couriers 主席树
    BZOJ 4826: [Hnoi2017]影魔 单调栈 主席树
    BZOJ 3956: Count 主席树 可持久化线段树 单调栈
    2018/4/9省选模拟赛 0分
  • 原文地址:https://www.cnblogs.com/suwh/p/3444653.html
Copyright © 2011-2022 走看看