网站可能会包含一些模块:像文章、产品、图片、留言等。

栏目模块主要实现功能,启用或禁用模块,模块权限设置,模块上传设置等。

权限设置和上传设置以后专门考虑,先来显示或禁用模块。

1、在顶部导航栏添加管理连接

打开Home/Header.cshtml,在<nav>添加代码

2、添加Module接口

using Ninesky.Models;
using System.Linq; namespace Ninesky.Areas.Admin.Repository
{
/// <summary>
/// 后台管理模块接口
/// <remarks>
/// 版本v1.0
/// 创建2013.12.10
/// </remarks>
/// </summary>
interface InterfaceModule:Ninesky.Repository.InterfaceModule
{
/// <summary>
/// 查找模块
/// </summary>
/// <returns>所有模块列表</returns>
IQueryable<Module> Find(); /// <summary>
/// 修改模块信息
/// </summary>
/// <param name="module">模块</param>
/// <returns>是否修改成功</returns>
bool Modify(Module module);
}
}

3、接口实例

using Ninesky.Models;
using System.Linq; namespace Ninesky.Areas.Admin.Repository
{
/// <summary>
/// 模块接口实例
/// <remarks>
/// 版本v1.0
/// 创建2013.12.12
/// </remarks>
/// </summary>
public class ModuleRepository:Ninesky.Repository.ModuleRepository,InterfaceModule
{
public IQueryable<Module> Find()
{
return nContext.Modules;
} public bool Modify(Module module)
{
nContext.Modules.Attach(module);
nContext.Entry<Module>(module).State = System.Data.EntityState.Modified;
return nContext.SaveChanges() > 0;
}
}
}

4、添加控制器ModuleController

首先添加一个实现返回模块列表的action

/// <summary>
/// 列表
/// </summary>
/// <param name="enable">启用状态。【0-全部,1-启用,2-禁用】</param>
/// <returns>
/// 普通请求时返回包含强类型List\<Module\>的视图<br />
/// ajax请求返回json类型List\<Module\>
/// </returns>
public ActionResult Items(int id = 0)
{ var _modules = moduleRepository.Find();
if (Request.IsAjaxRequest()) return Json(_modules);
return View(_modules);
}

菜单

/// <summary>
/// 菜单
/// </summary>
/// <returns></returns>
public ActionResult Menu()
{
return PartialView(moduleRepository.Find());
}

菜单视图

@model IEnumerable<Ninesky.Models.Module>
<div id="westmenu" class="easyui-accordion">
<div title="模块列表" class="leftsidebar">
<ul>
@foreach(var item in Model){
<li>@Html.ActionLink(item.Name, "Index", "Module", new { id = item.ModuleId }, new { @class = "westmenuitem" })</li>
}
</ul>
</div>
</div>
@*@Scripts.Render("~/Areas/Admin/Scripts/Category.js")*@
<script type="text/javascript">
WestMenu();
</script>

模块信息页

/// <summary>
/// 模块信息页
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult Index(int id)
{
return PartialView(moduleRepository.Find(id));
}
@model Ninesky.Models.Module

<div class="c_navbar">后台管理 >> 模块管理 >> 模块信息</div>
<div class="easyui-tabs">
<div title="基本信息">
<div class="fs_wapper">
@using (Html.BeginForm("Modify", "Module", FormMethod.Post, new { id = "module_base" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="header">@Html.HiddenFor(model => model.ModuleId)</div>
@Html.ValidationSummary()
<table class="fieldset">
<tr>
<th>@Html.LabelFor(model => model.Name)<span>*</span></th>
<td>@Html.TextBoxFor(model => model.Name, new { disabled = "disabled" })</td>
</tr>
<tr>
<th>@Html.LabelFor(model => model.Enable)<span>*</span></th>
<td>@Html.EditorFor(model => model.Enable)
@Html.ValidationMessageFor(model => model.Description)
</td>
</tr>
<tr>
<th>@Html.LabelFor(model => model.Model)<span>*</span></th>
<td>@Html.TextBoxFor(model => model.Model, new { disabled = "disabled" })</td>
</tr>
<tr>
<th>@Html.LabelFor(model => model.Description)</th>
<td>@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</td>
</tr>
<tr>
<th></th>
<td>
<a id="btn_modulebase_save" class="easyui-linkbutton">保存</a>
</tr>
</table>
}
@Scripts.Render("~/Areas/Admin/Scripts/Module.js")
<script>
ModuleBase_Ready();
</script>
</div>
</div>
<div title="上传设置">……</div>
<div title="权限设置">……</div>
</div>

效果图

这里上传设置和权限设置以后补充。

5、控制器中添加启用、关闭模块处理action

/// <summary>
/// 修改模块信息
/// </summary>
/// <returns></returns>
public ActionResult Modify(int? ModuleId,bool? Enable,string Description)
{
JsonViewModel _jsonViewModel = new JsonViewModel() { Authentication = 0, Success = true };
bool _modifyed = false;
if (ModuleId == null)
{
_jsonViewModel.Success = false;
_jsonViewModel.ValidationList.Add("ModuleId", "模块Id不能为空");
}
if (Enable == null)
{
_jsonViewModel.Success = false;
_jsonViewModel.ValidationList.Add("Enable", "启用状态不能为空");
}
if (_jsonViewModel.Success)
{
var _module = moduleRepository.Find((int)ModuleId);
if (_module == null)
{
_jsonViewModel.Success = false;
_jsonViewModel.Message = "模块存在";
}
else
{
if (_module.Enable != Enable) { _module.Enable = (bool)Enable; _modifyed = true; }
if (_module.Description != Description) { _module.Description = Description; _modifyed = true; }
if (_modifyed)
{
if (moduleRepository.Modify(_module)) { _jsonViewModel.Success = true; _jsonViewModel.Message = "修改模块成功。"; }
else { _jsonViewModel.Success = false; _jsonViewModel.Message = "数据未能保存到数据库"; }
}
else { _jsonViewModel.Success = false; _jsonViewModel.Message = "数据未发生更改"; }
}
}
else _jsonViewModel.Message = "数据验证失败!";
return Json(_jsonViewModel);
}

6、模块过滤器

这里写个过滤器,ModuleFilter。命名空间Ninesky.Extensions。作用是加到模块上面,当模块关闭时,前台用户讲不能访问模块内容。

using Ninesky.Repository;
using System.Web.Mvc; namespace Ninesky.Extensions
{
/// <summary>
/// 模块过滤器
/// 屏蔽禁用模块
/// <remarks>
/// 版本v1.0
/// 创建2013.12.12
/// </remarks>
/// </summary>
public class ModuleFilter:ActionFilterAttribute
{
/// <summary>
/// 模型名
/// </summary>
public string Model { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (string.IsNullOrEmpty(Model)) filterContext.Result = new ContentResult() { Content = "未指定模块" };
switch (Model)
{
case "Article":
InterfaceModule _moduleRepository = new ModuleRepository();
var _module = _moduleRepository.Find(Model);
if (_module == null) filterContext.Result = new ContentResult() { Content = "未找到指定模块" };
else if (!_module.Enable) filterContext.Result = new ContentResult() { Content = _module.Name + "已关闭" };
break;
default:
filterContext.Result = new ContentResult() { Content = "未找到指定模块" };
break;
}
}
}
}

=================

代码网盘或群Ninesky2013-12-12.zip

MVC4做网站后台:模块管理1、修改模块信息的更多相关文章

  1. MVC4做网站后台:用户管理 —用户

    这块进行用户管理,可以浏览.查询已注册的用户,修改用户资料,删除用户等.没有做添加用户,不知是否必要.列表页还是使用easyui的datagrid.这个思路跟用户组的方式差不多. 1.接口Interf ...

  2. MVC4做网站后台:栏目管理1、添加栏目

    把栏目添加删除跟前台混在一起结构清晰,现在有了后台管理的区域就把后台管理相关的代码分开. 要实现功能: 1.添加栏目 2.删除栏目 3.修改栏目信息 -- 一.开始 1.添加 接口InterfaceC ...

  3. MVC4做网站后台:用户管理 ——用户组 2、查看、修改、删除用户组

    查看用户组资料和修改用户组资料结合在一起,在用户组列表双击查看用户组资料,修改资料点保存可以保存用户组,点删除可以删除用户组. 先在UserGroupController中添加 action publ ...

  4. MVC4做网站后台:栏目管理2、修改栏目

    接上节添加栏目. 修改栏目与添加栏目非常相似,主要区别在于先向视图传递要修改栏目的model.另外在保存时比添加栏目验证要更多一些. 1.要验证父栏目不能是其本身: 2.父栏目不能是其子栏目: 3.父 ...

  5. MVC4做网站后台:用户管理 ——用户组

    用户管理这块包含用户和用户组两部分. 用户组包括浏览 用户组列表,添加.修改.删除用户组等.按照前面思路系统是依据用户组来判断用户权限的,用户组的最主要目的是划分权限.权限这块以后单独在做. 下面实现 ...

  6. MVC4做网站后台:用户管理 ——用户组 1、添加用户组

    打开控制器UserGroupController 添加Add action /// <summary> /// 添加用户组 /// </summary> /// <ret ...

  7. MVC4做网站后台:用户管理 ——用户组补充

    上次做完发现存在点问题. 1.是类型显示的为数字(如下图): 2.是不能根据类型进行查询. 首先做查询.easyui-datagrid可以添加toolbar. 在datagrid的data-optio ...

  8. MVC4做网站后台:栏目管理3、删除栏目与左侧列表菜单

    一.左侧列表菜单 打开视图Menu.cshtml,增加部分见红框 在category中添加脚本 //栏目菜单加载完毕函数 function CategoryMenu_Ready() { $('#cat ...

  9. MVC4做网站后台:栏目管理1、添加栏目-续

    栏目类型跟原来一样分为常规栏目.单页栏目和外部链接.根据栏目类型的不同要隐藏相应的表单和验证(服务器端验证).另外一个是父栏目必须是常规栏目才行,easyui-combotree要用到树形json数据 ...

随机推荐

  1. 简述HTML DOM及其节点分类

    在JavaScript中,document这个对象大家一定很熟悉,哪怕是刚刚开始学习的新人,也会很快接触到这个对象.而document对象不仅仅是一个普通的JavaScript内置对象,它还是一个巨大 ...

  2. 【BZOJ】4056: [Ctsc2015]shallot

    题意 在线.可持久化地维护一条二维平面上的折线,支持查询与任意一条直线的交点个数. 点的个数和操作个数小于\(10^5\) 分析 一条折线可以用一个序列表示,可持久化序列考虑用可持久化treap. 如 ...

  3. MAC帧和IP包的分析

    ping了12次岭南师范学院官网后退出   抓到的包如下   各个名词解释

  4. nodejs 单元测试

    之前项目开发因为改进度,基本都是粗放式开发.为了提高代码质量,单元测试是必不可少的. 针对restful api ,用supertest 测试框架.针对nodejs,引入mocha 和should 可 ...

  5. Ejabberd导入到eclipse

    ejabberd 在eclipse(erlide)中的配置.调试.运行   最近在折腾ejabberd,将ejabberd项目配置到eclipse中进行编译.调试等,现在将过程记下来,希望能帮助到需要 ...

  6. springBoot上传文件大小设置

    框架架构: springboot+hibernate+freemarker+ueditor, tomcat内嵌在springboot里面,由于是内嵌,用ueditor上传图片,tomcat默认上传为1 ...

  7. 百度编辑器ueditor的简单使用

    最近刚被分配了以个消息发布的任务,其中用到了富文本编辑器.以前也用过,不过这次我选择的是百度富文本编辑器ueditor1_4_3-utf8-jsp版的. 其实看ueditor功能很强大,不过百度的设计 ...

  8. 详解Maple中的基础工具栏

    鉴于Maple 强大的符号计算功能,越来越多的人选择使用Maple 2015计算复杂的数学问题,初学者刚开始时需要对Maple有所熟悉才能很好地进行运用,下面就从基础开始,介绍Maple工作环境. M ...

  9. 如何解决Maple的应用在数学中

    对任意数学和技术学科的研究员.教师和学生而言,Maple是一个必备的工具.通过Maple,教师将复杂数学问题注入生命,学生的精力集中在概念理解上而不是如何使用工具上,研究员可以开发更复杂的算法或模型. ...

  10. C#如何测试代码运行时间

    1.System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 开始监视代码运行时间 // 需要测试 ...