MVC4制作网站教程第三章 浏览用户组操作3.1

 更新时间:2021年9月22日 10:06  点击:1732

一、用户

二、用户组

2.1浏览用户组

在开始做浏览用户组之前,首先要考虑权限问题。浏览、添加、修改、删除用户组必须是系统管理员才能进行的操作,Action上必须验证是否是管理员,因此添加一个AdminAuthorize。在Extensions文件夹上点右键添加类"AdminAuthorizeAttribute”,继承自AuthorizeAttribute。

重写AuthorizeCore(HttpContextBase httpContext),里面什么代码都不写直接返回true。

因为管理员这块的功能还没做,目的是不验证管理员就可以进行添加、删除、浏览,权限验证代码等以后写管理员这块时再加。

using System;

namespace System.Web.Mvc
{
 /// <summary>
 /// 管理员权限验证
 /// </summary>
 public class AdminAuthorizeAttribute:AuthorizeAttribute
 {
 protected override bool AuthorizeCore(HttpContextBase httpContext)
 {
 return true;
 }
 }
} 

修改[List]Action,给其加上管理员权限验证。

/// <summary>
 /// 用户组列表
 /// </summary>
 /// <param name="Id">用户组类型</param>
 /// <returns></returns>
 [AdminAuthorize]
 public ActionResult List(int Id = -1)
 {
 userGroupRsy = new UserGroupRepository();
 IQueryable<UserGroup> _userGroup;
 if (Id == -1) _userGroup = userGroupRsy.List();
 else _userGroup = userGroupRsy.List(Id);
 return View(_userGroup);
 } 

id是用户组类型,因为用户组类型是枚举类型,从0起始,所以这里浏览地址不带id参数时设为-1显示所有用户组,当如数id参数时显示指定类型的用户组。

右键添加强类型“UserGroup”视图List.cshtml,修改生成的代码。

@model IEnumerable<Ninesky.Models.UserGroup>

@{
 ViewBag.Title = "用户组列表";
 Layout = "~/Views/Layout/_Manage.cshtml";
}
<div class="left">
 <div class="top"></div>
 左侧列表
</div>
<div class="split"></div>
<div class="workspace">
 <div class="inside">
 <div class="notebar">
 <img alt="" src="~/Skins/Default/Manage/Images/UserGroup.gif" />用户组列表
 </div>
 <div class="buttonbar">@Html.ActionLink("添加用户组", "Add", "UserGroup") </div>
 <table>
 <tr>
 <th>
  @Html.DisplayNameFor(model => model.Name)
 </th>
 <th>
  @Html.DisplayNameFor(model => model.Type)
 </th>
 <th>
  @Html.DisplayNameFor(model => model.Description)
 </th>
 <th></th>
 </tr>
 @foreach (var item in Model)
 {
 <tr>
  <td>
  @Html.DisplayFor(modelItem => item.Name)
  </td>
  <td>
  @Html.DisplayFor(modelItem => item.Type)
  </td>
  <td>
  @Html.DisplayFor(modelItem => item.Description)
  </td>
  <td>
  @Html.ActionLink("修改", "Edit", new { id = item.UserGroupId }) |
 @Html.ActionLink("删除", "Delete", new { id = item.UserGroupId })
  </td>
 </tr>
 }
 </table>
 </div>
</div>
<div class="clear"></div> 

运行浏览器里看下效果,还行。

现在应该添加一个下拉菜单,可以选择不同的用户组类型来显示相应类型的用户组

在【UserGroupController】添加属性TypeSelectList

/// <summary>
 /// 用户组类型的SelectList列表
 /// </summary>
 public List<SelectListItem> TypeSelectList
 {
 get
 {
 List<SelectListItem> _items = new List<SelectListItem>();
 _items.Add(new SelectListItem { Text = UserGroupType.Anonymous.ToString(), Value = ((int)UserGroupType.Anonymous).ToString() });
 _items.Add(new SelectListItem { Text = UserGroupType.Limited.ToString(), Value = ((int)UserGroupType.Limited).ToString() });
 _items.Add(new SelectListItem { Text = UserGroupType.Normal.ToString(), Value = ((int)UserGroupType.Normal).ToString() });
 _items.Add(new SelectListItem { Text = UserGroupType.Special.ToString(), Value = ((int)UserGroupType.Special).ToString() });
 return _items;
 }
 } 

修改[List]Action代码

/// <summary>
 /// 用户组列表
 /// </summary>
 /// <param name="Id">用户组类型</param>
 /// <returns></returns>
 [AdminAuthorize]
 public ActionResult List(int Id = -1)
 {
 userGroupRsy = new UserGroupRepository();
 IQueryable<UserGroup> _userGroup;
 if (Id == -1) _userGroup = userGroupRsy.List();
 else _userGroup = userGroupRsy.List(Id);
 var _typeLists = TypeSelectList;
 _typeLists.Insert(0, new SelectListItem { Text = "全部", Value = "-1" });
 if (_typeLists.Any(t => t.Value == Id.ToString())) _typeLists.SingleOrDefault(t => t.Value == Id.ToString()).Selected = true;
 ViewData.Add("GroupTypeList",_typeLists);
 return View(_userGroup);
 } 

在L.cshtml视图里@Html.ActionLink("添加用户组", "Add", "UserGroup")后面添加
用户组类型:@Html.DropDownList("GroupTypeList")

底部添加

<script type="text/javascript">
 $("#GroupTypeList").change(function () {
 
 window.location.href = "/UserGroup/List/" + $(this).children("option:selected").val();
 })
</script> 

完成后的List.cshtml代码如下:

@model IEnumerable<Ninesky.Models.UserGroup>

@{
 ViewBag.Title = "用户组列表";
 Layout = "~/Views/Layout/_Manage.cshtml";
}
<div class="left">
 <div class="top"></div>
 左侧列表
</div>
<div class="split"></div>
<div class="workspace">
 <div class="inside">
 <div class="notebar">
 <img alt="" src="~/Skins/Default/Manage/Images/UserGroup.gif" />用户组列表
 </div>
 <div class="buttonbar">@Html.ActionLink("添加用户组", "Add", "UserGroup") 用户组类型:
 @Html.DropDownList("GroupTypeList")
 </div>
 <table>
 <tr>
 <th>
  @Html.DisplayNameFor(model => model.Name)
 </th>
 <th>
  @Html.DisplayNameFor(model => model.Type)
 </th>
 <th>
  @Html.DisplayNameFor(model => model.Description)
 </th>
 <th></th>
 </tr>
 @foreach (var item in Model)
 {
 <tr>
  <td>
  @Html.DisplayFor(modelItem => item.Name)
  </td>
  <td>
  @Html.DisplayFor(modelItem => item.Type)
  </td>
  <td>
  @Html.DisplayFor(modelItem => item.Description)
  </td>
  <td>
  @Html.ActionLink("修改", "Edit", new { id = item.UserGroupId }) |
 @Html.ActionLink("删除", "Delete", new { id = item.UserGroupId })
  </td>
 </tr>
 }
 </table>
 </div>
</div>
<div class="clear"></div>
<script type="text/javascript">
 $("#GroupTypeList").change(function () {
 
 window.location.href = "/UserGroup/List/" + $(this).children("option:selected").val();
 })
</script> 

完成,浏览器中查看一下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • mac下Apache + MySql + PHP搭建网站开发环境

    首先为什不自己分别搭建Apache,PHP和MySql的环境呢?这样自己可以了解更多知识,说起来也更酷。可也许因为我懒吧,我是那种“既然有现成的,用就是了”的人。君子生非异也,善假于物也。两千年前的荀子就教导我们,要善于利用工具...2014-06-07
  • php实现网站留言板功能

    我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的畅言留言板样式:网易跟帖样式:原理 需要在评论表添加两个主要字段 id 和 pid ,其他字段随意添加,比如文章id、回复时间、回复内容、...2015-11-08
  • 网站广告怎么投放最好?首屏广告投放类型优化和广告位布局优化的案例

    网站广告怎么投放最好?一个网站中广告位置最好的是哪几个地方呢,许多的朋友都不知道如何让自己的网站广告收效最好了,今天我们就一起来看看吧。 在说到联盟优化前,...2016-10-10
  • 个人站长做网站应该考虑的一些问题

    个人网站建设应该考虑哪些问题呢?这个问题我们先在这里不说,下文会一一列出来,希望这些建义能帮助到各位同学哦。 我相信VIP成员里面有很多站长,每个人几乎都拥有一个...2016-10-10
  • 分享利用论坛签名提升网站权重

    分享一篇利用论坛签名提升网站权重的方法,在推广中论坛签名也是一种不错的外链推荐的方法,但现在权重越来越低了,有需要的朋友可以看看。 话说有一天在站长网上面看...2016-10-10
  • 网站排名提升后稳定排名方法

    一、靠前排名成搜索关注的对象   从搜索引擎的角度考虑一下,就不难理解为什么搜索引擎对排名在首页的网站那么慎重,甚至对新进排名在首页的一些网站进行为期一个多月的...2016-10-10
  • 如何有效提高网站的用户回头率

    第一,网站的内容;请各位站长朋友不要一天到晚只想着出什么好的绝招来推广网站,却忽略了网站的内容;其实网站的内容是极为重要的,因为这是你的本,你的根!网站的内容只有不断...2017-07-06
  • 如何提高网站pv 吸引力

    关于如何提高网站的吸引呢,下面我们列出了5点,让你的网站pv大大的提升哦   1、建立一个清晰的网站地图   一个清晰的网站地图可以给你的用户提供一个简介明了的...2017-07-06
  • 用PHP与XML联手进行网站编程

    一、小序 HTML简单易学又通用,一般的PHP程序就是嵌入在HTML语言之中实现的。但是随着WEB越来越广泛的应用,HTML的弱点也越来越明显了。XML的出现,弥补了这些不足,它提供...2016-11-25
  • C#网站生成静态页面的实例讲解

    今天小编就为大家分享一篇关于C#网站生成静态页面的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-06-25
  • 网站改版了怎么办?

    网站改版了怎么办?很多网站在改版的时候,非常担心用户习惯。   有的担心是合理的,有的担心是多余的。担心之前,先搞清两个问题:   首先,你有没有老用户?有多少老用户?如果...2016-09-20
  • 如何提高网站品牌形象

    这两个网站的title和description部分关键词有点过于强调,决定弱化这种现象成了我的当务之急,以提高网站在搜索引擎里的品牌形象(搜索引擎返回结果就这两部分)。通过分析...2016-10-10
  • 对于网站快速提升排名10种方法分析

    在耽误近一年时间的情况下,痛定思痛,决定自己动手做公司网站的SEO,具体过程如下:   1.买了几本专门SEO方面的书本,啃了两个星期,经常上比如www.111cn.net 和seo教程why之类...2016-10-10
  • 百度不更新网站原因分析

    百度不更新网站原因分析 今天我们来看一篇关于 哦,你是不是其它的之一呢,好了下面来看看各位站长总结了来百度不更新网页的原因吧。 一、首页的大flash图片。   ...2016-10-10
  • python 制作网站筛选工具(附源码)

    平常工作生活中,boos可能会给我们很多网站取提取信息,这些网站有的无法响应,有的404,有的501…真的需要所有网站都访问再提取信息吗?今天写一个小工具用于筛选网站中能访问的网站,在此仅举一例,即状态码为200。...2021-01-22
  • 那类网站放Google adsense广告好

    那类网站放Google adsense广告好呢,好了费话不说多了我们来看看Google adsense吧  1. 增加Google AdSense的展示效果,理论上是页面越多,展示的就越多。但是Google...2017-07-06
  • 如何提高网站内页权重

    如何提高网站内页权重 前面做站者总结出来的道理其实都是很实惠的,只是你有没有那个恒心去坚持了。所谓的“内容为王,外链为后!”是一点都不假的,一名站长...2017-07-06
  • 提高网站转化率

    在线预订系统即便存在一点点小错误,也可以导致有价值客户的流失。Jones在其主题为“别让我想,也别让我等”的演讲中,强调客户满意度必然可以换来客户忠诚度。...2016-10-10