这一章节比较简单,我就直接贴代码了,后台管理登陆界面如下:
对应的控制器HomeController.cs,代码如下:
using YKT.Model;
using YKT.Common;
using YKT.BLL;
using YKT.Common.HtmlHelpers;
using YKT.Common.Functions;
using Microsoft.Practices.Unity;
using YKT.IBLL;
namespace YKT.Controllers
{
public class HomeController : BaseController
{
#region 通用部分-实例化业务逻辑对象
ValidationErrors validationErrors = new ValidationErrors();
HomeService m_BLL = new HomeService();
ISysMenuRoleFuncService _menuRoleFunService = new SysMenuRoleFuncService();
#endregion
public ActionResult Index()
{
Account account = GetCurrentAccount();
if (account == null)
{
return RedirectToAction("Index", "Account");
}
else
{
ViewData["PersonName"] = account.UID;
ViewData["Menu"] = m_BLL.GetMenuByAccount(ref account);// 获取菜单
}
return View();
}
//[SupportFilter]
public ActionResult Main()
{
SysInfo model = m_BLL.GetSysInfoModel() as SysInfo;
return View(model);
}
/// <summary>
/// 根据父节点获取数据字典,绑定二级下拉框的时候使用
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult GetSysFieldByParent(string id, string parentid, string value)
{
if (string.IsNullOrWhiteSpace(value))
{
return null;
}
ISysFieldHander baseDDL = new SysFieldHander();
return Json(new SelectList(baseDDL.GetSysFieldByParent(id, parentid, value), "MyTexts", "MyTexts"), JsonRequestBehavior.AllowGet);
}
/// <summary>
/// 获取列表中的按钮导航
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult GetToolbar(int id)
{
Account account = GetCurrentAccount();
if (account == null)
{
return Content(" <script type='text/javascript'> window.top.location='Account'; </script>");
}
List<SMFUNCTB> sysOperations = _menuRoleFunService.GetByRefSysMenuIdAndSysRoleId(id, account.RoleIds);
List<toolbar> toolbars = new List<toolbar>();
foreach (SMFUNCTB item in sysOperations)
{
toolbars.Add(new toolbar() { handler = item.EVENT_NAME, iconCls = item.ICONIC, text = item.FUNC_NAME });
}
return Json(toolbars, JsonRequestBehavior.AllowGet);
}
}
}
这里我继承了一个基控制器BaseController如下:
/*Company:EMPEROR*/
/*Author:Zouqj*/
/*Date:2014-02-20*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.EnterpriseServices;
using YKT.Model;
using System.Web.Mvc;
using System.Configuration;
using System.Web;
using System.IO.Compression;
using YKT.Common;
namespace YKT.Controllers
{
[SupportFilter]//此处如果去掉注释,则全部继承BaseController的Controller,都将执行SupportFilter过滤
public class BaseController : Controller
{
/// <summary>
/// 是否添加选择行
/// </summary>
public bool IsAddSelect = true;
/// <summary>
/// //选择行的文本
/// </summary>
public string DefaultSelectText = "——请选择——";
/// <summary>
/// //默认选择的值
/// </summary>
public string DefaultSelectValue = "";
/// <summary>
/// 默认选择的整数值
/// </summary>
public int? DefaultIntValue = -1;
/// <summary>
/// 是否是Oracle数据库
/// </summary>
public bool IsOracle = ConfigurationManager.AppSettings["DataBase"] == "Oracle" ? true : false;
/// <summary>
/// 根据序列名称获取oracle序列
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public Decimal GetProblemXH(string name)
{
Decimal maxXh = 90000000;
using (YKTEntities entity = new YKTEntities())
{
String strDBType = ((System.Data.EntityClient.EntityConnection)(entity.Connection)).StoreConnection.ToString();
if (entity != null)
{
string strSeqIDQuerySQL;
if (strDBType == "System.Data.SqlClient.SqlConnection")
{
strSeqIDQuerySQL = "insert into dual(NewDate) values(GETDATE()) select @@identity";
}
else
{
strSeqIDQuerySQL = "select " + name + ".nextval from dual";
}
Decimal decSeqID = entity.ExecuteStoreQuery<Decimal>(strSeqIDQuerySQL).First();
maxXh = decSeqID;
}
}
return maxXh;
}
/// <summary>
/// 获取当前登陆人的名称
/// </summary>
/// <returns></returns>
public string GetCurrentPerson()
{
Account account = GetCurrentAccount();
if (account != null && !string.IsNullOrWhiteSpace(account.UID))
{
return account.UID;
}
return string.Empty;
}
/// <summary>
/// 获取当前登陆人的账户信息
/// </summary>
/// <returns>账户信息</returns>
public Account GetCurrentAccount()
{
if (Session["account"] != null)
{
Account account = (Account)Session["account"];
return account;
}
return null;
}
public BaseController()
{ }
}
}
View如下:
@{
ViewBag.Title = "一卡通企业平台";
Layout =null;
}
<!DOCTYPE html>
<html>
<head id="Head1">
<title>一卡通企业平台</title>
<base target="_self"/>
<link href='@Url.Content("~/Res/easyui/themes/default/easyui.css")' rel="stylesheet" type="text/css" />
<link href='@Url.Content("~/Content/Default.css")' rel="stylesheet" type="text/css" />
<link href='@Url.Content("~/Res/easyui/themes/icon.css")' rel="stylesheet" type="text/css" />
<script src='@Url.Content("~/Scripts/jquery-1.8.0.min.js")' type="text/javascript"></script>
<script src='@Url.Content("~/Res/easyui/jquery.easyui.min.js")' type="text/javascript"></script>
<script src='@Url.Content("~/Res/easyui/locale/easyui-lang-zh_CN.js")' type="text/javascript"></script>
<script type="text/javascript">
function closeErrors() {
return true;
}
window.onerror = closeErrors;
$(function () {
//var w = $(document).width();
//$("#banner").width(w); //设置bannar的宽度
tabCloseEven();
addTab("我的工作台", "Home/Main", "xiongdi", false);
$('ul li a').click(function () {
var tabTitle = $(this).text();
var url = $(this).attr("rel"); //获取地址
var id = $(this).attr("id"); //获取id
var icon = $(this).attr("icon"); //获取图标
if (icon == "") {
icon = "icon-save";
}
addTab(tabTitle, url, icon, true, id);
});
$('#loginOut').click(function () {
$.messager.confirm('系统提示', '您确定要退出本次登录吗?', function (r) {
if (r) {
location.href = '/Account/LogOff';
}
});
});
$('#ChangePassword').click(function () {
showPwdWindow("修改密码", "Account/ChangePassword");
});
})
function addTab(subtitle, url, icon, closable, id) {
if (!$('#tabs').tabs('exists', subtitle)) {
$('#tabs').tabs('add', {
title: subtitle,
content: createFrame(url, id),
closable: closable
, icon: icon
});
} else {
$('#tabs').tabs('select', subtitle);
}
tabClose();
}
function createFrame(url, id) {
var s = '<iframe id="' + id + '" scrolling="no" frameborder="0" src="' + url + '" style="width:100%;height:99%; "></iframe>';
return s;
}
function tabClose() {
/*双击关闭TAB选项卡*/
$(".tabs-inner").dblclick(function () {
var subtitle = $(this).children(".tabs-closable").text();
$('#tabs').tabs('close', subtitle);
})
/*为选项卡绑定右键*/
$(".tabs-inner").bind('contextmenu', function (e) {
$('#mm').menu('show', {
left: e.pageX,
top: e.pageY
});
var subtitle = $(this).children(".tabs-closable").text();
$('#mm').data("currtab", subtitle);
$('#tabs').tabs('select', subtitle);
return false;
});
}
//绑定右键菜单事件
function tabCloseEven() {
//刷新
$('#mm-tabupdate').click(function () {
var currTab = $('#tabs').tabs('getSelected');
var url = $(currTab.panel('options').content).attr('src');
var id = $(currTab.panel('options').content).attr('id'); ; //获取id
$('#tabs').tabs('update', {
tab: currTab,
options: {
content: createFrame(url, id)
}
})
})
//关闭
$('#mm-tabclose').click(function () {
var currtab_title = $('#mm').data("currtab");
$('#tabs').tabs('close', currtab_title);
})
//在新窗口打开该标签
$('#tab_menu-openFrame').click(function () {
var url = $(".tabs-panels .panel").eq($('.tabs-selected').index()).find("iframe").attr("src");
window.open(url);
});
//全部关闭
$('#tab_menu-tabcloseall').click(function () {
$('.tabs-inner span').each(function (i, n) {
if ($(this).parent().next().is('.tabs-close')) {
var t = $(n).text();
$('#tabs').tabs('close', t);
}
});
//open menu
$(".layout-button-right").trigger("click");
});
//关闭除当前之外的TAB
$('#tab_menu-tabcloseother').click(function () {
var currtab_title = $('.tabs-selected .tabs-inner span').text();
$('.tabs-inner span').each(function (i, n) {
if ($(this).parent().next().is('.tabs-close')) {
var t = $(n).text();
if (t != currtab_title)
$('#tabs').tabs('close', t);
}
});
});
//关闭当前右侧的TAB
$('#tab_menu-tabcloseright').click(function () {
var nextall = $('.tabs-selected').nextAll();
if (nextall.length == 0) {
$.messager.alert('提示', '前面没有了!', 'warning');
return false;
}
nextall.each(function (i, n) {
if ($('a.tabs-close', $(n)).length > 0) {
var t = $('a:eq(0) span', $(n)).text();
$('#tabs').tabs('close', t);
}
});
return false;
});
//关闭当前左侧的TAB
$('#tab_menu-tabcloseleft').click(function () {
var prevall = $('.tabs-selected').prevAll();
if (prevall.length == 0) {
$.messager.alert('提示', '后面没有了!', 'warning');
return false;
}
prevall.each(function (i, n) {
if ($('a.tabs-close', $(n)).length > 0) {
var t = $('a:eq(0) span', $(n)).text();
$('#tabs').tabs('close', t);
}
});
return false;
});
}
//修改密码
function showPwdWindow(title, href) {
$('#myWindow').window({
title: title,
width: 600,
height: 400,
content: '<iframe scrolling="no" frameborder="0" src="' + href + '" style="width:100%;height:98%;"></iframe>',
shadow: false,
cache: false,
closed: false,
collapsible: false,
resizable: false,
loadingMessage: '正在加载数据,请稍等片刻......'
});
}
function showMyWindow(title, href, width, height, modal, minimizable, maximizable, isScrolling) {
var isScroll = isScrolling == undefined ? "yes" : "no";
$('#myWindow').window({
title: title,
width: width === undefined ? 600 : width,
height: height === undefined ? 450 : height,
content: '<iframe scrolling="' + isScroll + '" frameborder="0" src="' + href + '" style="width:100%;height:98%;"></iframe>',
// href: href === undefined ? null : href,
modal: modal === undefined ? true : modal,
minimizable: minimizable === undefined ? false : minimizable,
maximizable: maximizable === undefined ? false : maximizable,
shadow: false,
cache: false,
closed: false,
collapsible: false,
resizable: false,
loadingMessage: '正在加载数据,请稍等片刻......'
});
}
</script>
<style type="text/css">
body
{
font-family: 微软雅黑,新宋体;
}
a
{
color: Black;
text-decoration: none;
}
.easyui-tree li
{
margin: 5px 0px 0px 0px;
padding: 1px;
}
#mainlogo
{
position: absolute;
top: 0px;
left: 0px;
width: 575px;
height: 72px;
}
#center
{
padding-left: 575px;
padding-right: 425px;
}
#mainctrl
{
position: absolute;
top: 0px;
right: 0px;
height: 72px;
width: 425px;
}
.top
{
height: 76px;
background-color: #00211D;
}
.wel
{
height: 30px;
line-height: 30px;
color: #FFFFFF;
font-size: 14px;
text-align: right;
padding-right: 5px;
}
.ctr
{
vertical-align: middle;
margin-top: 18px;
height: 24px;
text-align: right;
background-image: url(../images/beijing.gif);
background-repeat: repeat-x;
}
.ctr li
{
float: left;
list-style: none;
}
.zi
{
padding-right: 16px;
padding-left: 3px;
}
a.v1:visited, a.v1:active, a.v1:link
{
font-size: 14px;
color: #000;
text-decoration: none;
}
a.v1:hover
{
font-size: 14px;
color: #005500;
text-decoration: none;
}
</style>
</head>
<body class="easyui-layout">
<noscript>
<div style="position: absolute; z-index: 100000; height: 2046px; top: 0px; left: 0px;
width: 100%; background: white; text-align: center;">
<img src="images/noscript.gif" alt='抱歉,请开启脚本支持!'/>
</div>
</noscript>
<div region="north" split="true" border="false" style="overflow: hidden; height: 76px;
line-height: 20px; color: #fff; font-family: 微软雅黑,黑体">
<div class="top" style="background-color:#204478; width:100%;">
<div id="mainlogo">
<img id="banner" src="images/hzbanner.png" alt="一卡通" style="height:72px;"/>
</div>
<div id="center">
</div>
<div id="mainctrl">
<div class="wel">
@ViewData["PersonName"]
,欢迎您的光临!</div>
<div class="ctr">
<li>
<img src="images/yuanjiao.png" alt="" /></li>
<li><a href="#">
<img src="images/mimaxiugai.gif" alt="" border="0" /></a></li>
<li class="zi"><a href="#" id="ChangePassword" class="v1">密码修改</a></li>
<li><a href="#">
<img src="images/anquantuichu.gif" alt="" border="0" /></a></li>
<li class="zi"><a href="#" id="loginOut" class="v1">安全退出</a></li>
<li><a href="#">
<img src="images/bangzhu.gif" border="0"></a></li>
<li class="zi"><a href="http://www.xiongdi.cn" class="v1">帮助中心</a></li>
@* <li><a href="#">
<img src="images/duanxinxi.gif" alt="" border="0" /></a></li>
<li class="zi"><a href="#" class="v1">短消息(0)</a></li>*@
</div>
</div>
</div>
</div>
<div region="west" hide="true" split="true" title="导航菜单" style="width: 180px;" id="west">
<div class="easyui-accordion" fit="true" border="false">
@Html.Raw(ViewData["Menu"])
</div>
</div>
<div id="mainPanle" region="center" style="background: #eee;">
<div id="tabs" class="easyui-tabs" fit="true" border="false">
</div>
</div>
<div region="south" split="true" style="height: 29px;">
<div style="padding: 0px; margin-left: 50%;">
技术支持 <a href="http://www.xiongdi.cn" target="_blank">雄帝股份</a>
</div>
</div>
<div id="mm" class="easyui-menu" style="width: 150px;">
<div id="mm-tabupdate" data-options="iconCls:'icon-reload'">
刷新</div>
<div id="tab_menu-openFrame">
在新的窗体打开</div>
<div class="menu-sep">
</div>
<div id="mm-tabclose" data-options="iconCls:'icon-cancel'">
关闭</div>
<div id="tab_menu-tabcloseright">
关闭右边</div>
<div id="tab_menu-tabcloseleft">
关闭左边</div>
<div id="tab_menu-tabcloseall">
关闭所有</div>
<div id="tab_menu-tabcloseother">
关闭其他标签页</div>
</div>
<div id="myWindow">
</div>
</body>
</html>