C# MVC 用户登录状态判断 【C#】list 去重(转载) js 日期格式转换(转载) C#日期转换(转载) Nullable<System.DateTime>日期格式转换 (转载) Asp.Net MVC中Action跳转(转载)
C# MVC 用户登录状态判断
来源:https://www.cnblogs.com/cherryzhou/p/4978342.html
在Filters文件夹下添加一个类AuthenticationAttribute ,代码如下:


// 登录认证特性
public class AuthenticationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Session["username"] == null)
filterContext.Result = new RedirectToRouteResult("Login", new RouteValueDictionary { { "from", Request.Url.ToString() } });
base.OnActionExecuting(filterContext);
}
}


在Controller中的使用方法如下:


public class HomeController : Controller
{
[Authentication]
public ActionResult Index()
{
return View();
}
}


如果你想针对整个MVC项目的所有Action都使用此过滤器,步骤如下(a,b选择一种就好):
a. 确保Global.asax.cs的Application_Start方法中包含如下红色行:


public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}


b. 在FilterConfig.cs文件中注册相应的特性过滤器:


public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthenticationAttribute());
}
}


【C#】list 去重(转载)
Enumerable.Distinct 方法 是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组、集合中的重复元素,还可以自定义去重的规则。
有两个重载方法:


//
// 摘要:
// 通过使用默认的相等比较器对值进行比较返回序列中的非重复元素。
//
// 参数:
// source:
// 要从中移除重复元素的序列。
//
// 类型参数:
// TSource:
// source 中的元素的类型。
//
// 返回结果:
// 一个 System.Collections.Generic.IEnumerable<T>,包含源序列中的非重复元素。
//
// 异常:
// System.ArgumentNullException:
// source 为 null。
public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source);
//
// 摘要:
// 通过使用指定的 System.Collections.Generic.IEqualityComparer<T> 对值进行比较返回序列中的非重复元素。
//
// 参数:
// source:
// 要从中移除重复元素的序列。
//
// comparer:
// 用于比较值的 System.Collections.Generic.IEqualityComparer<T>。
//
// 类型参数:
// TSource:
// source 中的元素的类型。
//
// 返回结果:
// 一个 System.Collections.Generic.IEnumerable<T>,包含源序列中的非重复元素。
//
// 异常:
// System.ArgumentNullException:
// source 为 null。
public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source, IEqualityComparer<TSource> comparer);


第一个方法不带参数,第二个方法需要传一个System.Collections.Generic.IEqualityComparer<T>的实现对象
1.值类型元素集合去重
List<int> list = new List<int> { 1, 1, 2, 2, 3, 4, 5, 5 };
list.Distinct().ToList().ForEach(s => Console.WriteLine(s));
执行结果是:1 2 3 4 5
2.引用类型元素集合去重
首先自定义一个Student类
使用不到参数的Distinct方法去重


List<Student> list = new List<Student>() {
new Student("James",1,"Basketball"),
new Student("James",1,"Basketball"),
new Student("Kobe",2,"Basketball"),
new Student("Curry",3,"Football"),
new Student("Curry",3,"Yoga")
};
list.Distinct().ToList().ForEach(s => Console.WriteLine(s.ToString()));


执行结果:
可见,并没有去除重复的记录。
不带comparer参数的Distinct方法是使用的IEqualityComparer接口的默认比较器进行比较的,对于引用类型,默认比较器比较的是其引用地址,程序中集合里的每一个元素都是个新的实例,引用地址都是不同的,所以不会被作为重复记录删除掉。
因此,我们考虑使用第二个重载方法。
新建一个类,实现IEqualityComparer接口。注意GetHashCode方法的实现,只有HashCode相同才会去比较


public class Compare:IEqualityComparer<Student>
{
public bool Equals(Student x,Student y)
{
return x.Id == y.Id;//可以自定义去重规则,此处将Id相同的就作为重复记录,不管学生的爱好是什么
}
public int GetHashCode(Student obj)
{
return obj.Id.GetHashCode();
}
}


然后调用
list.Distinct(new Compare()).ToList().ForEach(s => Console.WriteLine(s.ToString()));
执行结果:
我们按照Id去给这个集合去重成功!
3.如何编写一个具有扩展性的去重方法
调用:
list.MyDistinct(s=>s.Id).ToList().ForEach(s => Console.WriteLine(s.ToString()));
用到了泛型、委托、扩展方法等知识点。可以用于任何集合的各种去重场景
转载来源:https://www.cnblogs.com/Robert-go-go/p/5399198.html
js 日期格式转换(转载)
1.当前时间转为 “yyyy-MM-dd HH:MM:SS”
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function getNowFormatDate() { var date = new Date(); var seperator1 = "-"; var seperator2 = ":"; var month = date.getMonth() + 1; var strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + " " + date.getHours() + seperator2 + date.getMinutes() + seperator2 + date.getSeconds(); return currentdate;} |
2.任意日期转为 “yyyy-MM-dd HH:MM:SS”,将 date 变量作为参数传递。
3.任意日期转为 “yyyy-MM-dd ”,稍微改动即可。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// 获取当前的日期时间 格式“yyyy-MM-dd” function getFormatDate(date) { //var date = new Date(); var seperator1 = "-"; var month = date.getMonth() + 1; var strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate; return currentdate; } |
4.任意日期转为 “ HH:MM:SS ”,稍微改动即可,省略。
5. 将指定的格式转换为"yyyy-MM-dd"的格式,代码如下:
var oldTime = (new Date("2012/12/25 20:11:11")).getTime();
var curTime = new Date(oldTime).format("yyyy-MM-dd");
console.log(curTime);
6. 将 "时间戳" 转换为 "年月日" 的格式.
比如如下代码:
var da = 1402233166999;
da = new Date(da);
var year = da.getFullYear();
var month = da.getMonth()+1;
var date = da.getDate();
console.log([year,month,date].join('-'));
转载来源:https://www.cnblogs.com/tugenhua0707/p/3776808.html
C#日期转换(转载)
转载来源:https://www.cnblogs.com/johnblogs/p/5912632.html
DateTime.ToString()的各种日期格式
例:
ToString:2016/9/27 0:00:00
ToString("yyyy/MM/dd"):2016/09/27
ToString("yyyy-MM-dd"):2016-09-27
ToString("yyyy.MM.dd"):2016.09.27
ToString("dd/MM/yyyy"):27/09/2016
ToString("dd-MM-yyyy"):27-09-2016
ToString("yyyy年MM月dd日"):2016年09月27日
ToString("yyyy-MM-dd HH:mm:ss.fff")); 2016-09-27 01:02:03.001 // fff 越多精度越高
ToString("yyyy-MM-dd HH:mm:ss:ms")); 2016-09-27 01:02:03:234
详细解释:
1.y代表年份,注意是小写的y,大写的Y并不代表年份。
2.M表示月份。
3.d表示日期,注意D并不代表什么。
4.h或H表示小时,h用的是12小时制,H用的是24小时制。
5.m表示分钟。
6.s表示秒。注意S并不代表什么。
|
格式 |
输出 |
示例 |
|
年 |
||
|
y |
7 |
string yy = DateTime.Now.ToString("y-MM") yy="7-05" |
|
yy |
07 |
string yy = DateTime.Now.ToString("yy-MM") yy="07-05" |
|
yyy或更多的y |
1984 |
string yy = DateTime.Now.ToString("yyyy"); yy="2007" |
|
月 |
||
|
M |
5. |
string mon = DateTime.Parse("1984-05-09")ToString("yyyy-M") mon = "1984-5" |
|
MM |
05. |
string mon = DateTime.Parse("1984-05-09")ToString("MM") mon = "05" |
|
MMM |
如果是中文版的操作系统,则会输出:五月. 如果是英文操作系统,则输入月份前三个字母的简写:May |
string mon = DateTime.Parse("2006-07-01").ToString("MMM") 英文版操作系统:Jul 中文版操作系统:七月 |
|
MMMM或更多的M |
如果是中文版的操作系统,则会输出:五月. 如果是英文操作系统,则输入月份的全写 |
string mon = DateTime.Parse("2006-07-01").ToString("MMM") 英文版操作系统:July 中文版操作系统:七月 |
|
日期或星期 |
||
|
d |
9 |
string dd= DateTime.Parse("1984-05-09")ToString("d") dd= "9" |
|
dd |
09 |
string dd= DateTime.Parse("1984-05-09")ToString("dd") dd= "09" |
|
ddd |
如果是中文版的操作系统,则会输出星期,如星期三。. 如果是英文操作系统,则输出星期的简写:如 Wed |
string dd = DateTime.Parse("2006-07-01").ToString("ddd") 英文版操作系统:Wed 中文版操作系统:星期三 |
|
dddd或更多的d |
如果是中文版的操作系统,则会输出星期,如星期三。. 如果是英文操作系统,则输出星期:如 Wednesday |
string dd = DateTime.Parse("2006-07-01").ToString("dddd") 英文版操作系统:Wednesday 中文版操作系统:星期三 |
|
小时 |
||
|
h |
小时范围:1-12 |
string hh = DateTime.Now.ToString(“h”); hh = 8 |
|
hh或更多的h |
小时范围:1-12 |
string hh = DateTime.Now.ToString(“hh”); hh = 08 |
|
H |
小时范围:0-23 |
string hh = DateTime.Now.ToString(“yyyy-H”); hh = 2006-8 |
|
HH或更多的H |
小时范围:0-23 |
string hh = DateTime.Now.ToString(“yyyy-HH”); hh = 2006-08 string hh = DateTime.Pare(“2006-7-4 18:00:00”).ToString(“yyyy-HH”); hh = 2006-18 |
|
分钟 |
||
|
m |
6 |
string mm = DateTime.Now.ToString("yyyy-MM-dd-m"); mm = “2006-07-01-6”; |
|
mm或更多的m |
06 |
string mm = DateTime.Now.ToString("yyyy-MM-dd-mm"); mm = “2006-07-01-06”; |
|
秒 |
||
|
s |
6 |
string mm = DateTime.Now.ToString("yyyy-MM-dd-s"); mm = “2006-07-01-6”; |
|
ss或更多的s |
06 |
string mm = DateTime.Now.ToString("yyyy-MM-dd-ss"); mm = “2006-07-01-06”; |
但是
Nullable<System.DateTime>日期格式转换 (转载)
一、问题
1、html页面中时间显示出错,数据库中时间是正确的。
原因:没有把DateTime转成String类型。
2、 在C#中,发现不能直接使用ToString("yyyy-MM-dd HH:mm")这样的格式进行日期格式转换。
原因:在DB中,字段设置为Nullable<System.DateTime>,是可空的DateTime类型。
二、解决方案
if (user.BirthDate.HasValue)
{
userInfo.BirthDate = user.BirthDate.Value.ToString("yyyy-MM-dd");
}else
{
userInfo.BirthDate = string.Empty;
}
三、完整案例
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public UserInfo GetUserNoPasswordByUserName(string userName){ var user= db.T_User.Select(d => new { Address = d.Address, BirthDate = d.BirthDate, Company = d.Company, Phone = d.Phone, RealName = d.RealName, TelPhone = d.TelPhone, TypeID = d.TypeID, UserID = d.UserID, UserName = d.UserName, UserStatus = d.UserStatus }).Where(d => d.UserName == userName).SingleOrDefault(); UserInfo userInfo = new UserInfo(); userInfo.Address = user.Address; if (user.BirthDate.HasValue) { userInfo.BirthDate = user.BirthDate.Value.ToString("yyyy-MM-dd"); }else { userInfo.BirthDate = string.Empty; } userInfo.Company = user.Company; userInfo.Phone = user.Phone; userInfo.RealName = user.RealName; userInfo.TelPhone = user.TelPhone; userInfo.TypeID = user.TypeID; userInfo.UserID = user.UserID; userInfo.UserName = user.UserName; userInfo.UserStatus = user.UserStatus; return userInfo;} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//自定义视图数据类 public class UserInfo { public int UserID { get; set; } public string UserName { get; set; } public Nullable<short> TypeID { get; set; } public short UserStatus { get; set; } // public string Password { get; set; } public string RealName { get; set; } public string Company { get; set; } public string BirthDate { get; set; } public string Phone { get; set; } public string TelPhone { get; set; } public string Address { get; set; } } |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
//数据实体类 public partial class T_User { public int UserID { get; set; } public string UserName { get; set; } public Nullable<short> TypeID { get; set; } public short UserStatus { get; set; } public string Password { get; set; } public string RealName { get; set; } public string Company { get; set; } public Nullable<System.DateTime> BirthDate { get; set; } public string Phone { get; set; } public string TelPhone { get; set; } public string Address { get; set; } } |
转载来源:https://blog.csdn.net/baidu_34331194/article/details/68944906
Asp.Net MVC中Action跳转(转载)
首先action的跳转大致归类:
1跳转到与当前同一控制器内的action和不同控制器内的action、
2带有参数的action跳转和不带参数的action跳转。
3跳转到指定视图,不经过Controller的Action。
//跳转到当前Controller的指定Action(此处为Index),不带参数。
一、RedirectToAction("Index");
//跳转到指定Controller下的指定Action,不带阐述
二、RedirectToAction(ActionName,ControllerName)
//使用路由名称和路由值重定向到指定的路由。不带参数。
三、RedirectToRoute(new {controller="Home",action="Index"});
//使用路由名称和路由值重定向到指定的路由。带参数。
四、RedirectToRoute(new {controller="Home",action="Index", id=param});
//跳转到当前controller下的Action,可带参数。
五、Response.Redirect("Index?id=1");
//跳转到当前controller下的Action,不带参数。
六、return Redirect("Index");
//跳转到当前路径下的指定View(视图),但不经过Action方法。
七、return View("Index");
//跳转到指定路径下的指定View(视图),但不经过Action方法。这种方法是写全路径
八、return View("~/Views/Home/Index.aspx");
//跳转到当前Controller,当前Action下的View。 最常见。
九、return View();
C# MVC 用户登录状态判断 【C#】list 去重(转载) js 日期格式转换(转载) C#日期转换(转载) Nullable<System.DateTime>日期格式转换 (转载) Asp.Net MVC中Action跳转(转载)的更多相关文章
- C# MVC 用户登录状态判断
来源:https://www.cnblogs.com/cherryzhou/p/4978342.html 在Filters文件夹下添加一个类AuthenticationAttribute ,代码如下: ...
- Nullable<System.DateTime>日期格式转换 (转载)
一.问题 1.html页面中时间显示出错,数据库中时间是正确的. 原因:没有把DateTime转成String类型. 2. 在C#中,发现不能直接使用ToString("yyyy-MM-d ...
- vue用户登录状态判断
之前项目中用来判断是否登录我写了多种方案,但是最终只有一个方案是比较好的,这篇博客就是分享该方案; 先说基本要求: 项目中的登录状态是依据服务器里的状态来作为判断依据; 每一个需要登录后才能操作的接口 ...
- MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用
前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...
- iOS开发之记录用户登录状态
iOS开发之记录用户登录状态 我们知道:CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户的登陆状态.例如微信 ...
- ASP.NET MVC 用户登录Login
ASP.NET MVC 用户登录Login一.先来看个框架例子:(这个是网上收集到的) 第一步:创建一个类库ClassLibrary831. 第二步:编写一个类实现IHttpM ...
- Asp.Net使用加密cookie代替session验证用户登录状态 源码分享
首先 session 和 cache 拥有各自的优势而存在. 他们的优劣就不在这里讨论了. 本实例仅存储用户id于用户名,对于多级权限的架构,可以自行修改增加权限字段 本实例采用vs2010编写 ...
- SpringBoot29 登录逻辑、登录状态判断
1 知识点扫盲 浏览器和服务器之间时通过session来确定连接状态的,浏览器第一次请求时服务端会自动生成一个session,并将这个sessionId传回给浏览器,浏览器将这个sessionId存放 ...
- Django 用Session和Cookie分别实现记住用户登录状态
简介 由于http协议的请求是无状态的.故为了让用户在浏览器中再次访问该服务端时,他的登录状态能够保留(也可翻译为该用户访问这个服务端其他网页时不需再重复进行用户认证).我们可以采用Cookie或Se ...
随机推荐
- blockdev - 从命令行调用区块设备控制程序
总览(SYNOPSIS) blockdev [options] commands devices 描述(DESCRIPTION) blockdev 工具允许从命令行调用区块设备控制程序. 选项(OPT ...
- fabric的安装
https://blog.csdn.net/lepton126/article/details/79148027
- 实训day01 python基础
一.编程语言 编程语言:可以被计算机所识别的表达方式. 编程:程序员通过编程语言将自己的想法编写出来,产生的结果就是包含字符的文件. 其中,只有程序在运行时,其中的字符才有特定的语法意义. 二.计算机 ...
- nexus 搭建 maven 私服
nexus 搭建 maven 私服 本机环境 Win 8 JDK 7 Maven 3.2 Nexus 2.11 版本选择 http://www.sonatype.org/nexus/archivedn ...
- 第3节 hive高级用法:16、17、18
第3节 hive高级用法:16.hive当中常用的几种数据存储格式对比:17.存储方式与压缩格式相结合:18.总结 hive当中的数据存储格式: 行式存储:textFile sequenceFile ...
- Oracle中如何插入特殊字符: &amp; 和 &#39; (多种解决方案)
Oracle中如何插入特殊字符:& 和 ' (多种解决方案)今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Inse ...
- 显微镜下的webpack4入门
前端的构建打包工具很多,比如grunt,gulp.相信这两者大家应该是耳熟能详的,上手相对简单,而且所需手敲的代码都是比较简单的.然后webpack的出现,让这两者打包工具都有点失宠了.webpack ...
- Python3.5安装wxpython
摘要:安装python3.X的wxpython:学习<Python基础教程>第12章“图形用户界面”时,关于升级pip和安装wxpython时遇到的一些问题和解决办法. 关于升级pip 使 ...
- oracle dmp文件的导入导出
一.命令行方式 exp 用户名/密码@库名 file=文件位置.dmp owner=用户名 imp 用户名/密码@库名 file=文件位置.dmp 注意 : 导入过程若有的表已经存在可能会报错,可以全 ...
- 一个页面从输入URL到加载显示完成,发生了什么?
面试经典题--URL加载 一.涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns.http):DNS解析成IP并完成http请求发送: 传输层(tcp.udp):三次握手四次挥手模 ...