zoukankan      html  css  js  c++  java
  • 我记录综合系统学习研究之用户管理三(wojilu.Web.Controller.Layouts SiteLayoutController)

    书接上回

    本节来分析wojilu.Web.Controller.Layouts SiteLayoutController的Layout方法

    public override void Layout() {

    load("topNav", new TopNavController().Index);

    对照framework\views\Layouts\SiteLayout\Layout.html里的前端视图代码看一下

    以下代码片段

    <body>

    #{topNav}
    <div id="pageWrap">
    <div id="pageWrapInner">

    #{header}

    <div id="pageMainWrap">

    load("topNav", new TopNavController().Index);

    是对上面的topNav变量赋值,赋什么值呢,看一下load的定义

    protected void load( String sectionName, aAction action ) {
    set( sectionName, loadHtml( action ) );
    }

     可以看出是将framework\views\Layouts\TopNav\Index.html的内容填充后,替换#{topNav}

    同理 load("header", new TopNavController().Header);

    是将framework\views\Layouts\TopNav\Header.html的内容填充后,替换#{header}

    接下来我们看一下TopNavController().Index和framework\views\Layouts\TopNav\Index.html有没有什么可以挖掘的东西。

    我们看到TopNavController().Index最后有一句    set( "navUrl", t2( Nav ) );

    对framework\views\Layouts\TopNav\Index.html最后的变量#{navUrl}进行了赋值,参见以下:

    <script type="text/javascript">var ctx = null;var navUrl = '#{navUrl}';</script>
    <script type="text/javascript" src="~js/wojilu.site.topnav.js?v=#{jsVersion}"></script>

    欲知此处的奥秘,我们就要看下wojilu.web\static\js\wojilu.site.topnav.js的实现了

    $(document).ready( function() {

    navUrl = (navUrl + '?url='+window.location.href).toAjax();

    ......

    $.post( navUrl, function(data) {

    ctx = data;

    ......

    }

    这里通过ajax的post方法,再次请求了服务器TopNavController()的Nav action

    public void Nav() {

    // TODO 如果是在访问用户空间,则判断:是否好友、是否关注
    echoJson( getLoginJsonString() );
    }

    Nav()方法返回一段json给客户端。动态设置用户的一些状态和权限。

     load("header", new TopNavController().Header);

    主要是加载site的菜单和子菜单。有空再进行深入探讨。

    综上所述,整个流程,有两次服务器访问,一次是页面加载,一次是js请求topnav的json数据。

  • 相关阅读:
    jquery 读取file 图片文件的宽高
    log4net配置要点
    js 公用插件,教科书级的写法
    mvc4 发布,遇到 403.14 问题,并且iis提示打开目录浏览。。。解决办法
    js 处理 html 标签转义 处理json中含有的ascii 编码
    sqlserver ,left join 不仅可以join表,还可以是一个结果集
    .net MVC3 页面和 action 传值问题
    java web工程 数据库操作报驱动类找不到的错误
    MySQL快速构造百万数据
    python之eval函数的应用实例
  • 原文地址:https://www.cnblogs.com/xchsp/p/2858807.html
Copyright © 2011-2022 走看看