MVC4做网站后台:模块管理1、修改模块信息

news/2024/5/10 0:48:03/文章来源:https://blog.csdn.net/weixin_30919919/article/details/96958982

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

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

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

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

image

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

image

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>
复制代码

效果图

image

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

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


感谢您的支持与关注!

转载于:https://www.cnblogs.com/mvc2014/p/3776065.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_701943.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ccentos 7下安装php5.6并使用nginx + php-fpm部署多个不同端口网站

作为一个的勤杂工&#xff0c;近期因公司内部信息化的需求&#xff0c;给新进员工提供基础的知识培训和介绍&#xff0c;也为了给公司内部建立一个沟通交流的平台&#xff0c;百度找了开源的百科系统HDwiki和开源的问答系统Tipask问答系统&#xff0c;蛋痛的这两套系统均是phpm…

油猴脚本第一家,网页网盘链接实时判断+资源搜索网站导航,资源重度患者的福利...

现在网络上找资源&#xff0c;资源都是存在百度网盘的&#xff0c;大家都知道&#xff0c;百度网盘链接失效的非常之多。遇到网盘链接我们都要一个一个点进去查看链接是否失效&#xff0c;这样操作费时又累人。这时这个油猴脚本就可以帮忙了。实时判断网页中百度网盘链接状态。…

onmouseout事件与onchange事件分析

今天修改Bug,新到期时间为&#xff1a;原到期时间续卡时间 而不是 当前日期续卡时间。在修改的过程中发现一个Bug。那就是续卡时间数值框我输入新数值A之后&#xff0c;点击窗体空白处&#xff0c;新到期时间并没有修改过来&#xff0c; 再次点击数值输入框&#xff0c;输入新的…

网站域名解析端口_Linux Nginx网站服务——2

利用nginx搭建一个简单的网站&#xff0c;用域名访问第一步&#xff1a;编写nginx配置文件&#xff0c;设置server区块(创建出一个网站)&#xff0c;重启服务圈上的都是需要改变的内容&#xff0c;-s reload 平滑重启第二步&#xff1a;创建出server区块指定的站点目录第三步&a…

华为云域名注册_关于域名购买的常识介绍,想建站的必看

网站建设时可以选择自己购买域名也可以选择让网站开发公司帮助购买域名&#xff0c;但大部分客户都会选择自己购买域名&#xff0c;今天奥晶科技整理归纳了一份完整的域名购买的知识分享给大家&#xff0c;希望能帮助大家选到优质的域名。1.域名注册的平台及价格域名注册商平台…

浅谈千万级PV/IP规模高性能高并发网站架构

原创作者&#xff1a;老男孩linux实战运维培训机构 老男孩 QQ&#xff1a;31333741 说明&#xff1a;几个月前老男孩发过一次类似的文章&#xff0c;本次为了参加一个朋友邀请的活动&#xff0c;稍微完善了一下&#xff0c;欢迎各位同仁一起交流网站架构技术。 文章架构简图&…

大型网站系统架构演化之路(转)

前言 一个成熟的大型网站&#xff08;如淘宝、京东等&#xff09;的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务功能的扩展逐渐演变完善的&#xff0c;在这个过程中&#xff0c;开发模式、技术架构、设计…

欺诈网站都注重用户体验!你,还在等什么?!

一.背景介绍 小编是北京 OneAPM 公司 Browser Insight&#xff08;后文称 Bi&#xff09;的运营人员&#xff0c;这款产品主要用处是针对网站前端页面进行性能优化&#xff0c;以提升用户体验&#xff0c;所以每天小编都要做很多运营工作&#xff0c;例如&#xff1a;写文章&am…

2012年5月法国旅游网站排名

2019独角兽企业重金招聘Python工程师标准>>> 2012年5月排名&#xff1a;Voyages-sncf.com居于旅游中介网站首位&#xff0c;ViaMichelin France居于目的地及住宿网站首位&#xff0c;Air France - France居于航空公司网站首位。 旅游中介 排名 网站名称 域名 访问…

html禁止f12键代码,网站禁用f12 禁止调试代码方法

正常情况下 自己的一些网站的一些代码不想被别人扒来扒去的&#xff0c;可以看看本方法。可以设置复制提示,禁f12,禁止调试是很有必要的当然这个防不了大佬&#xff0c;只能防防小学生具体方法&#xff1a;1、首先我们需要下载web弹层组件layer2、解压上传到服务器&#xff0c;…

高并发高流量的大型网站架构设计(一)

2019独角兽企业重金招聘Python工程师标准>>> Web2.0的兴起&#xff0c;掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念&#xff0c;细分了网站功能和用户群&#xff0c;不仅成功的造就了一大批新生的网站&#xff0c;也极大的方便了上网的人们。但…

为什么用IP无法访问网站,域名可以访问?

我们访问网站都是通过域名进行访问的&#xff0c;偶尔会使用网站IP进行访问&#xff0c;如学校通常使用IP登录教务处&#xff0c;但很多的时候我们无法通过ip进行访问其他网站&#xff0c;这就涉及到服务器的问题了。 网站都是依托在服务器上面的&#xff0c;而服务器有很多种&…

爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

先看&#xff0c;前一期博客&#xff0c;理清好思路。 爬虫概念与编程学习之如何爬取网页源代码&#xff08;一&#xff09; 不多说&#xff0c;直接上代码。 编写代码 运行 <!DOCTYPE html><html><head><meta http-equiv"X-UA-Compatible" con…

个人网站搭建---godaddy域名+freewebhostingarea免费空间

自己准备做一个个人网站&#xff0c;由于第一次做所以遇到了各种困难&#xff0c;现在把自己的一些经历经验贴出来供大家参考。此贴针对一个完全没有经验的菜鸟&#xff0c;大牛勿喷。 个人搭建一个网站首先要考虑的是网址&#xff08;域名&#xff09;&#xff0c;然后是你的文…

onmouseover和onmouseout在Repeater控件中应用

如果你曾看过这篇&#xff0c;http://www.cnblogs.com/insus/articles/1411057.html &#xff0c;它是在GridView控件中演示&#xff0c;但是它的方法在Repeater控件是无法复制的。由于看到论坛上有网友问及&#xff0c;花上一点点时间做了Repeater控件的演示。首先看看效果(动…

移动网站开发中常用的10段JavaScript代码

在开发移动网站过程中&#xff0c;有一些Javascript代码会经常用到。以下是10段常用的JavaScript代码。需要注意的是某几段代码需要jQuery mobile framework支持。 1.如果网页是在iPhone或Android浏览器中查看&#xff0c;则在主体元素中添加“iPhone”或“Android” 类名 Java…

构建百万访问量电子商务网站之LVS负载均衡(前端四层负载均衡器)[连载之电子商务系统架构]...

构建百万访问量电子商务网站之LVS负载均衡(前端四层负载均衡器)[连载之电子商务系统架构] 版本&#xff1a;V1 出处&#xff1a;http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者&#xff1a;Jimmy Li 关键词&#xff1a;电子商务&#xff0c;系统架构&#xff0c…

html研究中心,seo研究中心 教程:认识HTML、css的重要性-专业SEO技

掌握HTML、css的重要性-专业SEO初级教程(27)依据之前的学习&#xff0c;确信大家早就对SEO有着一定的掌握。今天起大伙儿将正式开始SEO的学习。看到这里一些朋友或许有那般的疑虑&#xff0c;大伙儿并并不是要学习SEO吗&#xff1f;为什么讲解HTML的一些专业技能呢&#xff1f;…

SEO

SEO Search Engine Optimization :搜索引擎优化 增加被收录可能性争取在搜索结果中排名前列增加搜索引擎关键词中的排名免费方式,SEM为付费方式SEO基本知识 IP PVUV独立IP访问量 页面点击量或浏览量独立访客数&#xff08;针对客户端&#xff09;IP与UV的区别&#xff1a;同一个…

word在线解密_实用技能 | 5款免费在线转换PDF的网站

5款免费在线转换PDF的网站PDF在我们日常学习工作中用途都非常广泛&#xff0c;我们经常会有将下载的PDF文档转换为WORD或EXCEL等其他格式的文档&#xff0c;在我们经常接触到的文件都是付费的&#xff0c;使用起来需要会员&#xff0c;今天小编就为大家整理了几个免费在线转换P…