知识点03

C#

集合

  • 集合命名空间:

    • using System.Collections;(非泛型集合)
    • using System.Collections.Generic;(泛型集合)
  • 常用集合

    • “类似数组”集合:ArrayList、List

    • “键值对”集合(“哈希表”集合):Hashtable、Dictionary

    • “堆栈”集合:Stack、Stack(LIFO)Last In First Out

    • “队列”集合:Queue、Queue(FIFO)First In First Out

输入表单

不管你能做什么,或者梦想做什么,开始去做吧—-沃尔夫冈-歌德

数据输入的一般模式

  • 编辑→提交
  • 选择→编辑→提交

一个经典的选择编辑提交场景

提供数据和处理选择项

仅作演示,先创建index action,get 选择列表

模型绑定架构

不怕慢,就怕停—–孔子

模型绑定

模型绑定是指将通过HTTP请求说提交的值绑定到控制器所用的参数的过程。

模型绑定的基础结构

模型绑定逻辑是封装在一个特殊的模型绑定器类中的。

1 分析方法的签名

调用程序会将控制器名称拓展成一个类名称,并将操作名称解析成控制器上的方法名称,然后,调用程序会收集进行方法调用所需的所有值,与此同时会查看方法的签名,试图找出签名中每个参数所需的输入值。

2 为类型获取绑定器

知识点02

C#

属性的本质是字段+方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
namespace ClassLibrary1
{
public class Person
{
public string Name { get; set; }
}
}

namespace ClassLibrary1
{
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;

public class Person
{
[CompilerGenerated, DebuggerBrowsable(DebuggerBrowsableState.Never)]
private string <Name>k__BackingField;

public string Name { get; set; }
}
}

索引器的本质是名为Item的属性,并且索引器可以重载,不能再写一个名为item的属性

redis nosql介绍

NoSQL简介

​ 介绍redis前,我想还是先认识下NoSQL,即not only sql, 是一种非关系型的数据存储,key/value键值对存储。现有Nosql DB 产品: Redis/MongoDB/Memcached/Hbase/Cassandra/ Tokyo Cabinet/Voldemort/Dynomite/Riak/ CouchDB/Hypertable/Flare/Tin/Lightcloud/ KiokuDB/Scalaris/Kai/ThruDB, 等等~~~

ASP.NET MVC 异常记录

新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

public class LogHandleErrorAttribute: HandleErrorAttribute
{
private readonly ILoggerService _log;

public LogHandleErrorAttribute(ILoggerService log)
{
this._log = log;
}
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
_log.Error("被系统过滤捕获的异常" + filterContext.Exception.ToString());
filterContext.HttpContext.Response.Redirect("/");
}
}

只要程序出错就会执行这个方法。

知识点01

C#

事件event

C# 中的委托是什么?事件是不是一种委托?事件和委托的关系。
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的指针。
委托和事件没有可比性,因为委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准的 event 方式实现)事件的区别。事件的内部是用委托实现的。因为对于事件来讲,外部只能“注册自己+=、注销自己-=”,外界不可以注销其他的注册者外界不可以主动调用事件,因此如果用 Delegate 就没法进行上面的控制,因此诞生了事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割 List。事件只能 add、remove自己,不能赋值。事件只能+=、-=,不能= 。事件内部就是一个 private的委托和 add、remove 两个方法

ASP.NET MVC03

jQuery Validate

http://www.runoob.com/jquery/jquery-plugin-validate.html

Mvc校验及数据批注解耦方法

创建模型类

1
2
3
4
5
6
7
8
public class UserInfo
{
[StringLength(10,ErrorMessage = "*10个字符以内")]
public string Name { get; set; }

[Range(0,130,ErrorMessage = "*0到130岁之间")]
public int Age { get; set; }
}

通过模型类的数据批注,mvc中html帮助器方法会创建带校验的html属性

ASP.NET MVC02

接上篇

更新,删除可以先找出实体,然后直接更改属性保存即可,删除直接调用remove

1
2
3
4
5
6
7
var db = new luox78_成绩管理系统Entities();
var college = db.College.FirstOrDefault(m => m.Autoid == 1);
//更新
college.CollegeName = "changed";
//删除
db.College.Remove(college);
db.SaveChanges();

根据主键查询可以使用Find方法