首页 > 编程语言 >一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(1)

一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(1)

时间:2023-05-21 14:05:05浏览次数:48  
标签:Asp 一步 代码 Ext MVC background 添加 目录 important


忙活了那么久,终于进入正题,Ext JS MVC开发。

开始前,先说说4.1.1的一点点变化。在4.1的时候,要先创建一个扩展于Ext.app.Application的类,然后用create创建它的实例来开始应用程序的。而在4.1.1,则可直接调用application方法开始执行应用程序,简化了。

调用application方法,其参数是一个配置对象,主要配置项有以下两个:

l name:用来定义应用程序的名称,在这里是SimpleCMS。

l appFolder:应用程序的路径,这里是scripts/app

l autoCreateViewport:默认值为false,在这里要设置为true,让它自动加载\Script\app\View目录下的Viewport.js文件。因为目录已经在Loader中配置好了,因而不用设置目录。

在VS2010中,打开首页Index.cshtml,在用户信息下加入以下代码:

function
if (Ext.BLANK_IMAGE_URL.substr(0, 4)!= "data") {
"Content/Images/s.gif";
                    }
 
                    Ext.application({
"SimpleCMS",
"scripts/app",
true
                    });
 
                })

 

这样,应用程序就运行起来了,现在要创建Viewport.js。在解决方案资源管理器中,在\Script\app\View目录上单击右键添加一个名为Viewport.js的脚本文本。在文件中需要定义一个从Ext.container.Viewport派生的类,用来搭建应用程序的整体界面。本示例将构建一个类似于Ext JS API的用户界面,分顶部、主区域、底部三部分。顶部主要是显示系统名称和退出等按钮,主区域使用标签页来显示管理的内容,而文章内容的详细信息页也会已标签页形式显示。底部纯粹是占位区,可以写一些状态信息等,但是在本示例就不做了,有兴趣自己研究一下。

目标明确后,先下好新类的定义框架,代码如下:

Ext.define('SimpleCMS.view.Viewport',{
    extend: 'Ext.container.Viewport',
 
function
       varme=this;
       me.callParent(arguments);
    }
 
});

 

 

代码中,一定要注意类名,类名中最后一个小数点之前的内容为目录,之后的是文件名。在这里因为SimpleCMS指向的目录是scripts/app,因而文件所在目录是scripts/app/view,正是当前文件所在目录。

现在考虑一下使用什么布局,因为是垂直划分的三部分,因而不需要使用到Border布局了,使用VBox就可以了,现在加入布局:

layout: { type: 'vbox', align: 'stretch' }

,

 

这里一定要加align,以便布局可以填满宽度。

现在,在items中加入界面的三个部分。顶部因为还要添加按钮,因而使用一个工具栏比较方便;中部是标签页;底部只是占位,用Component就行了。代码如下:

me.items = [
"toolbar", height: 53, id:"North"
"tabpanel",flex:1,
                items: [
"文章管理"
"图片管理"
"用户管理"
                ]
            },
"component",height:13,id:"South"
        ];

代码中,顶部的高度是53,底部是13。主体部分设置flex为1,表示它会占据剩余的空间。定义id,既方便未来访问,也方便定义样式。

现在,在浏览器打开页面,登录后将看到如图17所示的效果。

一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(1)_cms

图17 基本框架

基本框架出来了,要美化一下顶部和底部。在app目录下创建一个resources目录,在这里将存放应用程序的资源,如样式文件和图片。接着下下面创建css目录和images目录,css目录用来放置应用程序样式文件,images目录用来放置图片。在css目录下创建一个app.css的样式文件。然后添加一下样式:

#North,#South{
background:#6C86AE !important;
background-image: -webkit-gradient(linear,50% 0%, 50% 100%, color-stop(0%, #6C86AE), color-stop(100%, #526C95)) !important;
background-image: -webkit-linear-gradient(top,#6C86AE, #526C95) !important;
background-image: -moz-linear-gradient(top,#6C86AE, #526C95) !important;
background-image: -o-linear-gradient(top,#6C86AE, #526C95) !important;
background-image: -ms-linear-gradient(top,#6C86AE, #526C95) !important;
background-image: linear-gradient(top,#6C86AE, #526C95) !important;
border: 1px solid #567422 !important;
}

 

 

将样式文件添加到首页,然后刷新一下页面,将看到如图18所示的效果。

一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(1)_asp.net_02

图18 美化后的框架

现在看上去差不多了。

接着来完善一下顶部的显示,先加一个Component来显示项目名称,代码如下:

"toolbar", height:53,id:"North"
                items: [
'component', cls: 'logo', html: '简单的CMS后台管理系统'
                ]
            },

这里需要为组件定义一个样式logo来改变显示文字的大小,样式代码如下:

.logo {
  padding: 10px 10px 10px 31px !important;
  /*background: url(../images/logo.png)no-repeat 10px 12px;*/
  color: #fff !important ;
  font-size: 18px !important;
  font-weight: bold !important;
  text-shadow: 0 1px 0 #4e691f !important;
}

代码中屏蔽了logo,如果有logo,可以恢复代码显示logo。

刷新一下页面会看到如图19所示的标题。

一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(1)_cms_03

图19 页面标题

接着在工具来的最右边加一个退出按钮,用图标显示。先将图标文件(logout.png)复制到images目录。然后,添加以下代码来添加图标:

"->",
{iconCls: "logout", tooltip: "退出", scale: "large",
    handler:function(){
        window.location="Account/Logout";
    }                        
}

“->”符合会让工具栏的图标显示在右边。图标定义了scale为large,表示显示的是32*32的大图标。单击按钮会将页面转到Account控制器的Logout方法。

在css文件中添加logout样式:

.logout{
background:url("../images/logout.png") !important;
}

 

刷新一下页面,会看到如图20所示的退出图标。

图20 退出图标

退出操作不难,顺便完成了,切换到Account控制器,添加一个Logout方法,方法内,调用SignOut方法退出认证,并调整到首页就行了,代码如下:

public ActionResult
        {
FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");
        }

 

重新生成一下应用程序,然后在浏览器打开页面测试一下退出按钮。可以切换到登录页,表示退出操作已经完成了。

现在考虑主面板部分。因为用户管理只有系统管理员可以看到,因而现在这模式不便于进行处理,需要将它抽出来,先创建面板对象,然后根据权限添加需要的标签页。将items中的主面板代码删除,然后在它之前添加创建主面板的代码:

"tabpanel", {
"mainPanel",
            items: [
"文章管理"
"图片管理"
            ]
        });

 

代码中,添加了一个id,以便未来调用。文章管理和图片管理因为全部用户都可见,因而可以预添加在标签页里。

在Viewport的items里,把mainpanel添加到原来的代码位置。

接着要做的是通过Userinfo判断用户是否管理员,如果是,添加用户管理标签页,代码如下:

varroles = "." + SimpleCMS.Userinfo.Roles.join('.') + ".";
if(roles.indexOf(".系统管理员.") >= 0) {
    me.mainpanel.add({ title: "用户管理" });
}

因为在Userinfo中,角色是保存在数组中的,因而这里将其转换为字符串后再比较。调用标签页的add方法就可将新标签添加到标签页中了。

现在,在浏览器中用test用户登录页面,将看不到用户管理了。换admin登录,就可看到用户管理。这说明权限控制已经成功了。

以上控制权限的方法之后笔者习惯使用的方式,您可以根据自己的需要利用不同的方式,控制按钮、页面显示等方式都是一样的。Ext JS 4一个方便的地方就是用add、remove等方法可以很容易添加或移除组件。

好了,今天就到这了。

 


标签:Asp,一步,代码,Ext,MVC,background,添加,目录,important
From: https://blog.51cto.com/dqhuang/6319190

相关文章

  • org.apache.jasper.JasperException: /pages/role-list.jsp (行.: [145], 列: [8]) 根
    org.apache.jasper.JasperException:/pages/role-list.jsp(行.:[145],列:[8])根据标记文件中的TLD或attribute指令,attribute[items]不接受任何表达式 web.xml中版本号不兼容产生的问题;解决方法:<%@taglibprefix=“c”uri=“http://java.sun.com/jstl/core”%>改为<%@t......
  • 【源码解读】asp.net core源码启动流程精细解读
    引言core出来至今,已经7年了,我接触也已经4年了,从开始的2.1,2.2,3.1,5,6再到如今的7,一直都有再用,虽然我是一个Winform仔,但是源码一直从3.1到7都有再看,然后在QQ上面也一直比较活跃,之前好几年前一直说给大家解读asp.netcore源码,在之前的博客中,讲的都是比较粗略化的,因为东西太多......
  • ASP.NET Core 异常处理
    此文只是从中摘录整理下自己感兴趣的部分,以便备忘和方便查找回顾,详见:Artech-博客园(cnblogs.com)《ASP.NETCore6框架揭秘》由于ASP.NETCore是一个同时处理多个请求的web应用框架,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止。NuGet包Microsof......
  • ASP.NET Core(一) 承载系统、管道、概述
    此文只是从中摘录整理下自己感兴趣的部分,以便备忘和方便查找回顾,详见:Artech-博客园(cnblogs.com)《ASP.NETCore6框架揭秘》请务必先通读以下官网概述(15min~30min):ASP.NETCore基础知识概述|MicrosoftLearn承载系统借助.NETCore提供的承载系统(Hosting),我们可......
  • ASP.NET Core(二):IOC、DI,即依赖注入和控制反转
    此文只是从中摘录整理下自己感兴趣的部分,以便备忘和方便查找回顾,详见:Artech-博客园(cnblogs.com)《ASP.NETCore6框架揭秘》整个ASP.NETCore框架建立在一个底层的依赖注入框架之上,它使用依赖注入容器提供所需的服务对象。服务服务通常由组件提供,组件可以理解成......
  • 【python】【报错:pip中第三库下载成功,但是pycharm却没有显示】一步解决
     解决方案: 直接在这个目录下安装第三方库 ......
  • ASP.NET Core 接口文档解决方案(swagger)
    api文档解决方案很多,先介绍我用过的两种方案:比较项SwaggerShowdoc官网帮助说明--ShowDoc知名度较大、net6官方推荐国产在线测试支持不支持文档定义方式注释为主注释为主生成过程自动根据接口参数和返回类型生成相关说明。接口文档的一切都需在......
  • 【一步步开发AI运动小程序】三、运动识别处理流程
    随着人工智能技术的不断发展,阿里体育等IT大厂,推出的“乐动力”、“天天跳绳”AI运动APP,让云上运动会、线上运动会、健身打卡、AI体育指导等概念空前火热。那么,能否将这些在APP成功应用的场景搬上小程序,分享这些概念的红利呢?本系列文章就带您一步一步从零开始开发一个AI运动小程序......
  • [转]Android冷启动白屏解析,带你一步步分析和解决问题
    [img]http://dl2.iteye.com/upload/attachment/0118/3095/d8d8c13d-7225-33cd-9559-efcc6e1f9432.png[/img]关于首次启动程序白屏时间过长这个问题其实我也早就发现了,而且正如评论中所说,有的时候白屏时间可以长达七八秒。看来这个问题已经是一个普遍存在的......
  • 如何部署ASP.NET Core到Linux服务器
    #如何部署ASP.NETCore到Linux服务器我们开发的最终目的,是将开发后的东西发布网络上,以便自己及其他人使用。本篇博客介绍如果在linux上部署ASP.NETCore应用,使用nginx+systemd来管理我们的应用。##准备-Ubuntu20.04-Nginx-DOTNETSDK或Runtime##安装-......