asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(二)

下面开始在UserManager.Web中利用easyUI构建web。

1. 先删除自带的controllers、models和views(里面的shared和web.config可以保存)下面的文件

2. 要利用easyUI,首先去网上下载jquery-easyui-1.3.2.zip,同时下载一份EasyUI-1.3.2.CHM帮助文档,方便查阅。

这里给出下载链接分享:

链接: http://pan.baidu.com/s/1c2xAGKS 密码: pkd6

解压后的easyui是这样的

3. 下面在Controllers右击添加新的控制器-HomeController.cs

这一部分可以先看前面提到的极客学院中讲解MVC的视频,简单了解一下。

4. 在Views视图下创建HomeController.cs对应的视图,Views先添加新建文件夹,命名为Home

再在Home下新建视图

命名为Index,不选择母版,添加。

这时web项目已经新增了HomeController.cs和Index.aspx两个文件,前者用来写后台判断逻辑,后者则用来表示页面。所以打开Home-Index,我们刚刚下载的easyUI也是在这里运用。

忘了介绍,easyUI是一款简单,功能强大的js框架,在jQuery基础上发展而来的。

http://www.jeasyui.com/index.php

这里是它的官方网址,里面有很多demo和教程可以学习观看和利用。

5. 把下载的easyUI解压后添加到添加到Web-Content下面,我们可以复制部分要用到的文件即可。先在Content下面新建Easyui文件夹(和Views新建Home操作一样,重复的地方就不图示了)。

把jquery-easyui-1.3.2目录下的jquery-1.8.0.min.js和jquery.easyui.min.js直接复制(快捷键Ctrl+C)复制到Content-Easyui下(快捷键Ctrl+V),同样,复制locale下的easyui-lang-zh_CN.js和整个themes文件夹。

6. 添加js库到(home)Index中。(因为项目Views中可能包含多个Index.aspx,这里前面括号加上前缀表示属于哪个视图的index页面)

按照顺序添加jquery-1.8.0.min.js、jquery.easyui.min.js、easyui-lang-zh_CN.js!

然后为(home)Index添加easyui/themes/default/easyui.css和themes/icon.css的样式。

7. 使用easyui中的layout样式添加到(home)Index中。

可以先查看下载的jquery-easyui-1.3.2/demo/layout中的demo样例,或者直接打开EasyUI-1.3.2.CHM(注意:把chm放在easyui文件夹下面,否则打开不能完整显示图片),查阅layout的使用。

<body class="easyui-layout">
    <div data-options="region:‘north‘,border:false" style="height:61px;background:#0660bb;">
        <img src="/Content/Images/logo.png"/>
    </div>
	<div data-options="region:‘west‘,split:true,title:‘菜单栏‘" style="width:250px;padding:10px;">west content</div>
	<div data-options="region:‘south‘,border:false" style="height:20px;background:#ccc;padding:1px">当前登录人:JennyJiang</div>
	<div data-options="region:‘center‘,title:‘主面板‘" style="padding:10px">hello world!</div>

</body>

  将(home)Index中的<body>替换为上面的代码,显示layout:

layout按照上左右下中(north-west-east-south-center)的顺序,在使用easyui的layout时,必须将body设置class=“easyui-layout”,否则就没有用到,easyui的样式通过data-options来调整。其中,center是必须添加的,其他面板可以删除不显示。layout的data-options请查阅chm帮助文档学习。

8. 使用easyui的tree,设置菜单栏

使用帮助文档中的第二种格式,定义id为tt的ul,将tree的内容以json的格式传递,定义在MessController.cs中。

(home)Index中的body如下:

<body class="easyui-layout">

    <div data-options="region:‘north‘,border:false" style="height:61px;background:#0660bb;">
        <img src="/Content/Images/logo.png"/>
    </div>
    <div data-options="region:‘west‘,split:true,title:‘菜单栏‘" style="width:250px;padding:10px;">
        <ul id="tt"></ul>
    </div>
    <div data-options="region:‘south‘,border:false" style="height:20px;background:#ccc;padding:1px">当前登录人:JennyJiang</div>
    <div data-options="region:‘center‘,title:‘主面板‘" style="padding:10px">hello world!</div>

    <script type="text/javascript">
        $(‘#tt‘).tree({
            url: ‘/Mess/HomeMenu‘
        });
    </script>

</body>

在Controllers中新建控制器,MessController.cs,代码如下:其中定义了tree中显示的内容,即一个json的字符串返回

namespace UserManager.Web.Controllers
{
    public class MessController : Controller
    {
        //
        // GET: /Json/

        public ActionResult HomeMenu()
        {
            string json = string.Empty;
            json = @"[{
                    ""id"":1,
                    ""text"":""用户列表"",
                    ""children"":[{
                        ""id"":11,
                        ""text"":""普通用户"",
                        ""state"":""closed"",
                        ""children"":[{
                            ""id"":111,
                            ""text"":""用户添加""
                        },{
                            ""id"":112,
                            ""text"":""用户功能""
                        }]
                    },{
                        ""id"":12,
                        ""text"":""超级用户"",
                        ""state"":""closed"",
                        ""children"":[{
                            ""id"":121,
                            ""text"":""用户添加""
                        },{
                            ""id"":122,
                            ""text"":""用户功能""
                        }]
                    },{
                        ""id"":13,
                        ""text"":""index.html""
                    },{
                        ""id"":14,
                        ""text"":""about.html""
                    },{
                        ""id"":15,
                        ""text"":""welcome.html""
                    }]
                }]";
            return Content(json);
        }

    }
}

显示页面如下:

9. 使用easyui的tab,点击左边菜单栏的添加用户,可以在右边主面板中显示

(home)Index中的body如下

<body class="easyui-layout">

    <div data-options="region:‘north‘,border:false" style="height:61px;background:#0660bb;">
        <img src="/Content/Images/logo.png"/>
    </div>
    <div data-options="region:‘west‘,split:true,title:‘菜单栏‘" style="width:250px;padding:10px;">
        <ul id="tt"></ul>
    </div>
    <div data-options="region:‘south‘,border:false" style="height:20px;background:#ccc;padding:1px">当前登录人:JennyJiang</div>
    <div data-options="region:‘center‘,title:‘主面板‘" style="padding:10px">
        <div id="tabs" class="easyui-tabs" data-options="fit:true">
            <div title="home" style="padding:20px;display:none;">
                hello world!
            </div>
        </div>
    </div>

    <script type="text/javascript">
        $(‘#tt‘).tree({
            url: ‘/Mess/HomeMenu‘
        });

        $(‘#tt‘).tree({
            onClick: function (node) {
                //alert(node.text);  // alert node text property when clicked
                // add a new tab panel
                $(‘#tabs‘).tabs(‘add‘, {
                    title: node.text,
                    content: ‘Tab Body‘,
                    closable: true,
                });
            }
        });

    </script>

</body>

当点击左边菜单栏选项时,右边窗口会显示对应名称的tab,内容显示“Tab Body”。

但重复点击时仍然添加新的tab,对添加新的tab代码进行改进,查看easyui关于tab的帮助文档,有个exits。。。改进代码如下:

$(‘#tt‘).tree({
            onClick: function (node) {
                //alert(node.text);  // alert node text property when clicked
                // add a new tab panel   这里使用exits判断tab是否已经存在
                if($(‘#tabs‘).tabs(‘exists‘,node.text))
                {
                    $(‘#tabs‘).tabs(‘select‘,node.text);
                }
                else
                {
                    $(‘#tabs‘).tabs(‘add‘, {
                    title: node.text,
                    content: ‘Tab Body‘,
                    closable: true,
                    });
                }
            }
        });

修改后,重复单击同一菜单栏时,不会再新建新的tab,而是返回到已建的tab。

另外,发现点击文件夹,也会新建tab,通过“id”筛选过滤简单地处理了。

10. 为tab创建一个新的view,而不是显示简单的“Tab Body”。新的视图采用easyui的datagrid。

先在Views-Home下新建视图UserEvent.aspx,这里一定要注意添加完视图后一定要返回修改HomeController.cs,为其添加一个UserEvent的跳转函数。

(将上面的代码中的content:xx替换为href:xx)

这里可以简单先参考帮助文档里的datagrid显示。

然而,每个菜单栏的选项点击后,都自动跳转到同一页面,有时间的话,大家可以多写几个view,根据node.text分别对应到相应的视图。

今天的学习先到这里,下一篇来写登录注销和数据库(SQLite)的一些东西。

最后放一张结果图:

时间: 2024-12-18 17:34:15

asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(二)的相关文章

asp.net+mvc+easyui+sqlite 简单用户系统学习之旅

首次接触asp.net开发,希望把自己的学习之旅写下来,一方面做个知识归纳技术总结,另一方面开放到博客中,和大家一起交流学习! asp.net是目前流行的web开发技术之一,是微软旗下开发的基于.net framework的一套免费的网络应用框架.因为其强大专业的后台支持,和配套优秀的vs开发工具,越来越成为web开发者和公司的选择.学习asp.net可以参考极客学院的知识体系图. http://www.jikexueyuan.com/path/aspdotnet/ 1. C#语言基础 2. A

asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(一)

下面开启项目 1. 打开vs2010-文件-新建项目 2. 先创建一个空的解决方案: 选择其他项目类型-visual studio 解决方案-空白解决方案(默认.NET Framework 4),项目名和位置自定义,这里设为UserManager和D盘下我的项目下面的路径 3. 为空白解决方案添加项目,右击-添加-新建项目 4. 选择visual c#-web-asp.net mvc 2 web 应用程序 这里新建的web名称前缀为解决方案,后面加上.Web的方式命名,位置在我们刚刚创建的空白解

asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(六)—— 简单过滤器的使用

有些同学喜欢在测试或运行项目时,直接跳转页面到Home/Index下,但本次项目直接输入Home/Index则会报错 因为home/index中有个user.name参数,如果启动项目后直接跳转到home/index页后,则会报错.下面,我们来学习利用过滤器,直接输入home/index后让页面跳转到登录页面.(注意:如果当前你在测试时,已经登录跳转到主页后,在注销之前再刷新,输入home/index地址时,并不会报错,因为user.name参数是保存在session中,而我们在注销的操作中才把

asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(五)—— 解决tabs选择已建tab显示但datagrid的toolbar消失的问题

项目需要反复运行,调整bug.发现在选择已有选项卡时,虽然不需要再新建tab,直接跳转到已有的tab上,但问题是显示的datagrid有事会出现toolbar消失的问题.网上也有不少同学出现类似问题,好像是easyui中datagrid源代码的bug,第一次加载datagrid页面就不会出现问题. 这里,我通过利用每次都让datagrid重新加载的思路,来修正代码: 在(Home)Index中修改该段代码成如下 $('#tt').tree({ onClick: function (node) {

asp.net mvc +easyui 实现权限管理(二)

一写完后,好久没有继续写了.最近公司又在重新开发权限系统了,但是由于我人微言轻,无法阻止他们设计一个太监版的权限系统.想想确实是官大一级压死人啊, 没办法我只好不参与了 让他们去折腾. 我就大概说一下公司目前在做的权限系统,各位看官给点评价. 设计总体要求: (注:项目名称为 统一权限管理系统) 1.做一个通用权限系统. 2.权限设计按照角色设置. 3.提供统一权限接口 以上就是整体要求,解释一下, 我们的通用是指的以后每开发一套新系统,只需要在统一权限管理系统中进行相应的配置就好了,无需再去开

ASP.NET MVC +EasyUI 权限设计(二)环境搭建

请注明转载地址:http://www.cnblogs.com/arhat 今天突然发现博客园出问题了,老魏使用了PC,手机,平板都访问博客园了,都是不能正常的访问,原因是不能加载CSS,也就是不能访问common.cnblogs.com这个域名,一直出现"Aborted",非常的郁闷. 页面就是这样子的,不知道为什么,难道是不是我的3个终端有问题吧,还是园子的服务器有问题呢?还是路由器的问题呢?到现在这个问题还没解决,郁闷死了!弄得心情非常的不爽. 好吧,不在说这个问题了,开始我们的正

ASP.NET MVC +EasyUI 权限设计(一)开篇

在前一段时间中,老魏的确非常的忙碌,Blog基本上没有更新了,非常的抱歉,那么在后面的时间中,老魏会尽量的抽时间来写的,可能时间上就不太富裕了.今天开始呢,老魏会和大家分享一下关于权限设计的有关文章,由于在园子中已经有很多人写过这方面的知识了,所以老魏在这里呢可不能班门弄斧了,只是把自己的理解和做法和大家分享一下,如果有什么不对的地方或者可以优化的地方,老魏非常希望能够得到各位的建议. 话说权限是在任何的项目或者产品中都必须要用的模块,而这部分呢基本上是作为基础数据来提供的,为了能够控制各个用户

对Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架的个人认识

对Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架的个人认识   初次接触Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架,查阅了相关资料,了解了框架如何使用,以及优缺点,下面的说法可能比较浅显,后续的可能在开发过程中能了解的更深刻一些.说的不对的地方请及时指正. 首先,拿到这个框架的时候,第一个想问的问题是为什么想用这块框架,有什么好处,通过查资料浅显的理解为:为了实现应用的松耦合,通过配置完成对数据业务逻辑的处理,节省开发时

ASP.NET MVC+EasyUI+Entity FrameWork 整合开发

本文详细讲解怎么用ASP.NET MVC+EasyUI+Entity FrameWork 来开发一个项目 对于ASP.NET MVC的Jscript库,主要引用 <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")"></script> <script src="@Url.Content("