zoukankan      html  css  js  c++  java
  • admin.js

    /**

    @Name:layuiAdmin iframe版核心模块
    @Author:贤心
    @Site:http://www.layui.com/admin/
    @License:LPPL

    */

    layui.define('view', function(exports){
    var $ = layui.jquery
    ,laytpl = layui.laytpl
    ,element = layui.element
    ,setter = layui.setter
    ,view = layui.view
    ,device = layui.device()

    ,$win = $(window), $body = $('body')
    ,container = $('#'+ setter.container)

    ,SHOW = 'layui-show', HIDE = 'layui-hide', THIS = 'layui-this', DISABLED = 'layui-disabled', TEMP = 'template'
    ,APP_BODY = '#LAY_app_body', APP_FLEXIBLE = 'LAY_app_flexible'
    ,FILTER_TAB_TBAS = 'layadmin-layout-tabs'
    ,APP_SPREAD_SM = 'layadmin-side-spread-sm', TABS_BODY = 'layadmin-tabsbody-item'
    ,ICON_SHRINK = 'layui-icon-shrink-right', ICON_SPREAD = 'layui-icon-spread-left'
    ,SIDE_SHRINK = 'layadmin-side-shrink', SIDE_MENU = 'LAY-system-side-menu'

    //通用方法
    ,admin = {
    v: '1.0.0 std'

    //数据的异步请求
    ,req: view.req

    //发送验证码
    ,sendAuthCode: function(options){
    options = $.extend({
    seconds: 60
    ,elemPhone: '#LAY_phone'
    ,elemVercode: '#LAY_vercode'
    }, options);

    var seconds = options.seconds
    ,btn = $(options.elem)
    ,token = null
    ,timer, countDown = function(loop){
    seconds--;
    if(seconds < 0){
    btn.removeClass(DISABLED).html('获取验证码');
    seconds = options.seconds;
    clearInterval(timer);
    } else {
    btn.addClass(DISABLED).html(seconds + '秒后重获');
    }

    if(!loop){
    timer = setInterval(function(){
    countDown(true);
    }, 1000);
    }
    };

    options.elemPhone = $(options.elemPhone);
    options.elemVercode = $(options.elemVercode);

    btn.on('click', function(){
    var elemPhone = options.elemPhone
    ,value = elemPhone.val();

    if(seconds !== options.seconds || $(this).hasClass(DISABLED)) return;

    if(!/^1d{10}$/.test(value)){
    elemPhone.focus();
    return layer.msg('请输入正确的手机号')
    };

    if(typeof options.ajax === 'object'){
    var success = options.ajax.success;
    delete options.ajax.success;
    }

    admin.req($.extend(true, {
    url: '/auth/code'
    ,type: 'get'
    ,data: {
    phone: value
    }
    ,success: function(res){
    layer.msg('验证码已发送至你的手机,请注意查收', {
    icon: 1
    ,shade: 0
    });
    options.elemVercode.focus();
    countDown();
    success && success(res);
    }
    }, options.ajax));
    });
    }

    //屏幕类型
    ,screen: function(){
    var width = $win.width()
    if(width >= 1200){
    return 3; //大屏幕
    } else if(width >= 992){
    return 2; //中屏幕
    } else if(width >= 768){
    return 1; //小屏幕
    } else {
    return 0; //超小屏幕
    }
    }

    //清除本地 token,并跳转到登入页
    ,exit: view.exit

    //侧边伸缩
    ,sideFlexible: function(status){
    var app = container
    ,iconElem = $('#'+ APP_FLEXIBLE)
    ,screen = admin.screen();

    //设置状态,PC:默认展开、移动:默认收缩
    if(status === 'spread'){
    //切换到展开状态的 icon,箭头:←
    iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK);

    //移动:从左到右位移;PC:清除多余选择器恢复默认
    if(screen < 2){
    app.addClass(APP_SPREAD_SM);
    } else {
    app.removeClass(APP_SPREAD_SM);
    }

    app.removeClass(SIDE_SHRINK)
    } else {
    //切换到搜索状态的 icon,箭头:→
    iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD);

    //移动:清除多余选择器恢复默认;PC:从右往左收缩
    if(screen < 2){
    app.removeClass(SIDE_SHRINK);
    } else {
    app.addClass(SIDE_SHRINK);
    }

    app.removeClass(APP_SPREAD_SM)
    }

    layui.event.call(this, setter.MOD_NAME, 'side({*})', {
    status: status
    });
    }

    //xss 转义
    ,escape: function(html){
    return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&amp;')
    .replace(/</g, '&lt;').replace(/>/g, '&gt;')
    .replace(/'/g, '&#39;').replace(/"/g, '&quot;');
    }

    //事件监听
    ,on: function(events, callback){
    return layui.onevent.call(this, setter.MOD_NAME, events, callback);
    }

    //弹出面板
    ,popup: view.popup

    //右侧面板
    ,popupRight: function(options){
    //layer.close(admin.popup.index);
    return admin.popup.index = layer.open($.extend({
    type: 1
    ,id: 'LAY_adminPopupR'
    ,anim: -1
    ,title: false
    ,closeBtn: false
    ,offset: 'r'
    ,shade: 0.1
    ,shadeClose: true
    ,skin: 'layui-anim layui-anim-rl layui-layer-adminRight'
    ,area: '300px'
    }, options));
    }

    //主题设置
    ,theme: function(options){
    var theme = setter.theme
    ,local = layui.data(setter.tableName)
    ,id = 'LAY_layadmin_theme'
    ,style = document.createElement('style')
    ,styleText = laytpl([
    //主题色
    '.layui-side-menu,'
    ,'.layadmin-pagetabs .layui-tab-title li:after,'
    ,'.layadmin-pagetabs .layui-tab-title li.layui-this:after,'
    ,'.layui-layer-admin .layui-layer-title,'
    ,'.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child'
    ,'{background-color:{{d.color.main}} !important;}'

    //选中色
    ,'.layui-nav-tree .layui-this,'
    ,'.layui-nav-tree .layui-this>a,'
    ,'.layui-nav-tree .layui-nav-child dd.layui-this,'
    ,'.layui-nav-tree .layui-nav-child dd.layui-this a'
    ,'{background-color:{{d.color.selected}} !important;}'

    //logo
    ,'.layui-layout-admin .layui-logo{background-color:{{d.color.logo || d.color.main}} !important;}'

    //头部色
    ,'{{# if(d.color.header){ }}'
    ,'.layui-layout-admin .layui-header{background-color:{{ d.color.header }};}'
    ,'.layui-layout-admin .layui-header a,'
    ,'.layui-layout-admin .layui-header a cite{color: #f8f8f8;}'
    ,'.layui-layout-admin .layui-header a:hover{color: #fff;}'
    ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #fbfbfb;}'
    ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #fbfbfb;}'
    ,'.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar{background-color: #fff; background-color: rgba(255,255,255,.5);}'
    ,'.layadmin-pagetabs .layui-tab-title li:after{display: none;}'
    ,'{{# } }}'
    ].join('')).render(options = $.extend({}, local.theme, options))
    ,styleElem = document.getElementById(id);

    //添加主题样式
    if('styleSheet' in style){
    style.setAttribute('type', 'text/css');
    style.styleSheet.cssText = styleText;
    } else {
    style.innerHTML = styleText;
    }
    style.id = id;

    styleElem && $body[0].removeChild(styleElem);
    $body[0].appendChild(style);
    $body.attr('layadmin-themealias', options.color.alias);

    //本地存储记录
    local.theme = local.theme || {};
    layui.each(options, function(key, value){
    local.theme[key] = value;
    });
    layui.data(setter.tableName, {
    key: 'theme'
    ,value: local.theme
    });
    }

    //初始化主题
    ,initTheme: function(index){
    var theme = setter.theme;
    index = index || 0;
    if(theme.color[index]){
    theme.color[index].index = index;
    admin.theme({
    color: theme.color[index]
    });
    }
    }

    //记录最近一次点击的页面标签数据
    ,tabsPage: {}

    //获取页面标签主体元素
    ,tabsBody: function(index){
    return $(APP_BODY).find('.'+ TABS_BODY).eq(index || 0);
    }

    //切换页面标签主体
    ,tabsBodyChange: function(index, options){
    options = options || {};

    admin.tabsBody(index).addClass(SHOW).siblings().removeClass(SHOW);
    events.rollPage('auto', index);

    //执行 {setter.MOD_NAME}.tabsPage 下的事件
    layui.event.call(this, setter.MOD_NAME, 'tabsPage({*})', {
    url: options.url
    ,text: options.text
    });
    }

    //resize事件管理
    ,resize: function(fn){
    var router = layui.router()
    ,key = router.path.join('-');
    $win.off('resize', admin.resizeFn[key]);
    fn(), admin.resizeFn[key] = fn;
    $win.on('resize', admin.resizeFn[key]);
    }
    ,resizeFn: {}
    ,runResize: function(){
    var router = layui.router()
    ,key = router.path.join('-');
    admin.resizeFn[key] && admin.resizeFn[key]();
    }
    ,delResize: function(){
    var router = layui.router()
    ,key = router.path.join('-');
    $win.off('resize', admin.resizeFn[key])
    delete admin.resizeFn[key];
    }

    //关闭当前 pageTabs
    ,closeThisTabs: function(){
    if(!admin.tabsPage.index) return;
    $(TABS_HEADER).eq(admin.tabsPage.index).find('.layui-tab-close').trigger('click');
    }

    //……
    };

    //事件
    var events = admin.events = {
    //伸缩
    flexible: function(othis){
    var iconElem = othis.find('#'+ APP_FLEXIBLE)
    ,isSpread = iconElem.hasClass(ICON_SPREAD);
    admin.sideFlexible(isSpread ? 'spread' : null);
    }

    //刷新
    ,refresh: function(){
    var ELEM_IFRAME = '.layadmin-iframe'
    ,length = $('.'+ TABS_BODY).length;

    if(admin.tabsPage.index >= length){
    admin.tabsPage.index = length - 1;
    }

    var iframe = admin.tabsBody(admin.tabsPage.index).find(ELEM_IFRAME);
    iframe[0].contentWindow.location.reload(true);
    }

    //输入框搜索
    ,serach: function(othis){
    othis.off('keypress').on('keypress',function(e){
    if(!this.value.replace(/s/g, '')) return;
    //回车跳转
    if(e.keyCode === 13){
    var href = othis.attr('lay-action')
    ,text = othis.attr('lay-text') || '搜索';

    href = href + this.value;
    text = text + ' <span style="color: #FF5722;">'+ admin.escape(this.value) +'</span>';

    //打开标签页
    layui.index.openTabsPage(href, text);

    //如果搜索关键词已经打开,则刷新页面即可
    events.serach.keys || (events.serach.keys = {});
    events.serach.keys[admin.tabsPage.index] = this.value;
    if(this.value === events.serach.keys[admin.tabsPage.index]){
    events.refresh(othis);
    }

    //清空输入框
    this.value = '';
    }
    });
    }

    //点击消息
    ,message: function(othis){
    othis.find('.layui-badge-dot').remove();
    }

    //弹出主题面板
    ,theme: function(){
    admin.popupRight({
    id: 'LAY_adminPopupTheme'
    ,success: function(){
    view(this.id).render('system/theme')
    }
    });
    }

    //便签
    ,note: function(othis){
    var mobile = admin.screen() < 2
    ,note = layui.data(setter.tableName).note;

    events.note.index = admin.popup({
    title: '便签'
    ,shade: 0
    ,offset: [
    '41px'
    ,(mobile ? null : (othis.offset().left - 250) + 'px')
    ]
    ,anim: -1
    ,id: 'LAY_adminNote'
    ,skin: 'layadmin-note layui-anim layui-anim-upbit'
    ,content: '<textarea placeholder="内容"></textarea>'
    ,resize: false
    ,success: function(layero, index){
    var textarea = layero.find('textarea')
    ,value = note === undefined ? '便签中的内容会存储在本地,这样即便你关掉了浏览器,在下次打开时,依然会读取到上一次的记录。是个非常小巧实用的本地备忘录' : note;

    textarea.val(value).focus().on('keyup', function(){
    layui.data(setter.tableName, {
    key: 'note'
    ,value: this.value
    });
    });
    }
    })
    }

    //全屏
    ,fullscreen: function(othis){
    var SCREEN_FULL = 'layui-icon-screen-full'
    ,SCREEN_REST = 'layui-icon-screen-restore'
    ,iconElem = othis.children("i");

    if(iconElem.hasClass(SCREEN_FULL)){
    var elem = document.body;
    if(elem.webkitRequestFullScreen){
    elem.webkitRequestFullScreen();
    } else if(elem.mozRequestFullScreen) {
    elem.mozRequestFullScreen();
    } else if(elem.requestFullScreen) {
    elem.requestFullscreen();
    }

    iconElem.addClass(SCREEN_REST).removeClass(SCREEN_FULL);
    } else {
    var elem = document;
    if(elem.webkitCancelFullScreen){
    elem.webkitCancelFullScreen();
    } else if(elem.mozCancelFullScreen) {
    elem.mozCancelFullScreen();
    } else if(elem.cancelFullScreen) {
    elem.cancelFullScreen();
    } else if(elem.exitFullscreen) {
    elem.exitFullscreen();
    }

    iconElem.addClass(SCREEN_FULL).removeClass(SCREEN_REST);
    }
    }

    //弹出关于面板
    ,about: function(){
    admin.popupRight({
    id: 'LAY_adminPopupAbout'
    ,success: function(){
    view(this.id).render('system/about');
    }
    });
    }

    //弹出更多面板
    ,more: function(){
    admin.popupRight({
    id: 'LAY_adminPopupMore'
    ,success: function(){
    view(this.id).render('system/more');
    }
    });
    }

    //返回上一页
    ,back: function(){
    history.back();
    }

    //主题设置
    ,setTheme: function(othis){
    var index = othis.data('index')
    ,nextIndex = othis.siblings('.layui-this').data('index');

    if(othis.hasClass(THIS)) return;

    othis.addClass(THIS).siblings('.layui-this').removeClass(THIS);
    admin.initTheme(index);
    }

    //左右滚动页面标签
    ,rollPage: function(type, index){
    var tabsHeader = $('#LAY_app_tabsheader')
    ,liItem = tabsHeader.children('li')
    ,scrollWidth = tabsHeader.prop('scrollWidth')
    ,outerWidth = tabsHeader.outerWidth()
    ,tabsLeft = parseFloat(tabsHeader.css('left'));

    //右左往右
    if(type === 'left'){
    if(!tabsLeft && tabsLeft <=0) return;

    //当前的left减去可视宽度,用于与上一轮的页标比较
    var prefLeft = -tabsLeft - outerWidth;

    liItem.each(function(index, item){
    var li = $(item)
    ,left = li.position().left;

    if(left >= prefLeft){
    tabsHeader.css('left', -left);
    return false;
    }
    });
    } else if(type === 'auto'){ //自动滚动
    (function(){
    var thisLi = liItem.eq(index), thisLeft;

    if(!thisLi[0]) return;
    thisLeft = thisLi.position().left;

    //当目标标签在可视区域左侧时
    if(thisLeft < -tabsLeft){
    return tabsHeader.css('left', -thisLeft);
    }

    //当目标标签在可视区域右侧时
    if(thisLeft + thisLi.outerWidth() >= outerWidth - tabsLeft){
    var subLeft = thisLeft + thisLi.outerWidth() - (outerWidth - tabsLeft);
    liItem.each(function(i, item){
    var li = $(item)
    ,left = li.position().left;

    //从当前可视区域的最左第二个节点遍历,如果减去最左节点的差 > 目标在右侧不可见的宽度,则将该节点放置可视区域最左
    if(left + tabsLeft > 0){
    if(left - tabsLeft > subLeft){
    tabsHeader.css('left', -left);
    return false;
    }
    }
    });
    }
    }());
    } else {
    //默认向左滚动
    liItem.each(function(i, item){
    var li = $(item)
    ,left = li.position().left;

    if(left + li.outerWidth() >= outerWidth - tabsLeft){
    tabsHeader.css('left', -left);
    return false;
    }
    });
    }
    }

    //向右滚动页面标签
    ,leftPage: function(){
    events.rollPage('left');
    }

    //向左滚动页面标签
    ,rightPage: function(){
    events.rollPage();
    }

    //关闭当前标签页
    ,closeThisTabs: function(){
    admin.closeThisTabs();
    }

    //关闭其它标签页
    ,closeOtherTabs: function(type){
    var TABS_REMOVE = 'LAY-system-pagetabs-remove';
    if(type === 'all'){
    $(TABS_HEADER+ ':gt(0)').remove();
    $(APP_BODY).find('.'+ TABS_BODY+ ':gt(0)').remove();

    $(TABS_HEADER).eq(0).trigger('click');
    } else {
    $(TABS_HEADER).each(function(index, item){
    if(index && index != admin.tabsPage.index){
    $(item).addClass(TABS_REMOVE);
    admin.tabsBody(index).addClass(TABS_REMOVE);
    }
    });
    $('.'+ TABS_REMOVE).remove();
    }
    }

    //关闭全部标签页
    ,closeAllTabs: function(){
    events.closeOtherTabs('all');
    //location.hash = '';
    }

    //遮罩
    ,shade: function(){
    admin.sideFlexible();
    }

    //呼出IM 示例
    ,im: function(){
    admin.popup({
    id: 'LAY-popup-layim-demo' //定义唯一ID,防止重复弹出
    ,shade: 0
    ,area: ['800px', '300px']
    ,title: '面板外的操作示例'
    ,offset: 'lb'
    ,success: function(){
    //将 views 目录下的某视图文件内容渲染给该面板
    layui.view(this.id).render('layim/demo').then(function(){
    layui.use('im');
    });
    }
    })
    }
    };

    //初始
    !function(){
    //主题初始化,本地主题记录优先,其次为 initColorIndex
    var local = layui.data(setter.tableName);
    if(local.theme){
    admin.theme(local.theme);
    } else if(setter.theme){
    admin.initTheme(setter.theme.initColorIndex);
    }

    //常规版默认开启多标签页
    if(!('pageTabs' in layui.setter)) layui.setter.pageTabs = true;

    //不开启页面标签时
    if(!setter.pageTabs){
    $('#LAY_app_tabs').addClass(HIDE);
    container.addClass('layadmin-tabspage-none');
    }

    //低版本IE提示
    if(device.ie && device.ie < 10){
    view.error('IE'+ device.ie + '下访问可能不佳,推荐使用:Chrome / Firefox / Edge 等高级浏览器', {
    offset: 'auto'
    ,id: 'LAY_errorIE'
    });
    }

    }();

    //admin.prevRouter = {}; //上一个路由

    //监听 tab 组件切换,同步 index
    element.on('tab('+ FILTER_TAB_TBAS +')', function(data){
    admin.tabsPage.index = data.index;
    });

    //监听选项卡切换,改变菜单状态
    admin.on('tabsPage(setMenustatus)', function(router){
    var pathURL = router.url, getData = function(item){
    return {
    list: item.children('.layui-nav-child')
    ,a: item.children('*[lay-href]')
    }
    }
    ,sideMenu = $('#'+ SIDE_MENU)
    ,SIDE_NAV_ITEMD = 'layui-nav-itemed'

    //捕获对应菜单
    ,matchMenu = function(list){
    list.each(function(index1, item1){
    var othis1 = $(item1)
    ,data1 = getData(othis1)
    ,listChildren1 = data1.list.children('dd')
    ,matched1 = pathURL === data1.a.attr('lay-href');

    listChildren1.each(function(index2, item2){
    var othis2 = $(item2)
    ,data2 = getData(othis2)
    ,listChildren2 = data2.list.children('dd')
    ,matched2 = pathURL === data2.a.attr('lay-href');

    listChildren2.each(function(index3, item3){
    var othis3 = $(item3)
    ,data3 = getData(othis3)
    ,matched3 = pathURL === data3.a.attr('lay-href');

    if(matched3){
    var selected = data3.list[0] ? SIDE_NAV_ITEMD : THIS;
    othis3.addClass(selected).siblings().removeClass(selected); //标记选择器
    return false;
    }

    });

    if(matched2){
    var selected = data2.list[0] ? SIDE_NAV_ITEMD : THIS;
    othis2.addClass(selected).siblings().removeClass(selected); //标记选择器
    return false
    }

    });

    if(matched1){
    var selected = data1.list[0] ? SIDE_NAV_ITEMD : THIS;
    othis1.addClass(selected).siblings().removeClass(selected); //标记选择器
    return false;
    }

    });
    }

    //重置状态
    sideMenu.find('.'+ THIS).removeClass(THIS);

    //移动端点击菜单时自动收缩
    if(admin.screen() < 2) admin.sideFlexible();

    //开始捕获
    matchMenu(sideMenu.children('li'));
    });

    //监听侧边导航点击事件
    element.on('nav(layadmin-system-side-menu)', function(elem){
    if(elem.siblings('.layui-nav-child')[0] && container.hasClass(SIDE_SHRINK)){
    admin.sideFlexible('spread');
    layer.close(elem.data('index'));
    };
    admin.tabsPage.type = 'nav';
    });

    //监听选项卡的更多操作
    element.on('nav(layadmin-pagetabs-nav)', function(elem){
    var dd = elem.parent();
    dd.removeClass(THIS);
    dd.parent().removeClass(SHOW);
    });

    //同步路由
    var setThisRouter = function(othis){
    var layid = othis.attr('lay-id')
    ,attr = othis.attr('lay-attr')
    ,index = othis.index();

    admin.tabsBodyChange(index, {
    url: attr
    });
    //location.hash = layid === setter.entry ? '/' : attr;
    }
    ,TABS_HEADER = '#LAY_app_tabsheader>li';

    //标签页标题点击
    $body.on('click', TABS_HEADER, function(){
    var othis = $(this)
    ,index = othis.index();

    admin.tabsPage.type = 'tab';
    admin.tabsPage.index = index;

    setThisRouter(othis);
    });

    //监听 tabspage 删除
    element.on('tabDelete('+ FILTER_TAB_TBAS +')', function(obj){
    var othis = $(TABS_HEADER+ '.layui-this');

    obj.index && admin.tabsBody(obj.index).remove();
    setThisRouter(othis);

    //移除resize事件
    admin.delResize();
    });

    //页面跳转
    $body.on('click', '*[lay-href]', function(){
    var othis = $(this)
    ,href = othis.attr('lay-href')
    ,text = othis.attr('lay-text')
    ,router = layui.router();

    admin.tabsPage.elem = othis;
    //admin.prevRouter[router.path[0]] = router.href; //记录上一次各菜单的路由信息

    //执行跳转
    var topLayui = parent === self ? layui : top.layui;
    topLayui.index.openTabsPage(href, text || othis.text());
    });

    //点击事件
    $body.on('click', '*[layadmin-event]', function(){
    var othis = $(this)
    ,attrEvent = othis.attr('layadmin-event');
    events[attrEvent] && events[attrEvent].call(this, othis);
    });

    //tips
    $body.on('mouseenter', '*[lay-tips]', function(){
    var othis = $(this);

    if(othis.parent().hasClass('layui-nav-item') && !container.hasClass(SIDE_SHRINK)) return;

    var tips = othis.attr('lay-tips')
    ,offset = othis.attr('lay-offset')
    ,direction = othis.attr('lay-direction')
    ,index = layer.tips(tips, this, {
    tips: direction || 1
    ,time: -1
    ,success: function(layero, index){
    if(offset){
    layero.css('margin-left', offset + 'px');
    }
    }
    });
    othis.data('index', index);
    }).on('mouseleave', '*[lay-tips]', function(){
    layer.close($(this).data('index'));
    });

    //窗口resize事件
    var resizeSystem = layui.data.resizeSystem = function(){
    //layer.close(events.note.index);
    layer.closeAll('tips');

    if(!resizeSystem.lock){
    setTimeout(function(){
    admin.sideFlexible(admin.screen() < 2 ? '' : 'spread');
    delete resizeSystem.lock;
    }, 100);
    }

    resizeSystem.lock = true;
    }
    $win.on('resize', layui.data.resizeSystem);

    //接口输出
    exports('admin', admin);
    });

  • 相关阅读:
    centos7安装supervisor
    redis4.0 cluster搭建
    网易cetus数据库中间件安装-读写分离版本
    mongodb副本集基于centos7部署
    C# 单例模式实现
    HttpWebRequest的GET和POST方法
    C#中$的用法
    判断一个表是否存在
    C# 继承的一些解释
    C# 虚方法和抽象方法
  • 原文地址:https://www.cnblogs.com/zzl0916/p/15114041.html
Copyright © 2011-2022 走看看