最近工作压力比较大,不得已开始自学C#。同时网站开发业务开展迫在眉睫,只能先从ASP.NET学起。回想一下,连C#和ASP.NET的关系都没有明白,就被赶鸭子上架了。。。我觉得这将是我工作以来最具有戏剧性的一笔!!

话不多说,网上搜了一下洞庭夕照的“学用MVC4做网站”,感觉最后从我现在的水平看实在是惊为天人之作,于是便开始一边看一边做了起来,无奈这位兄台技术在我之上不知多高,很多东西直接省略不讲,看得我实在费力,又找不到更好的教程,只能一边看一边百度。

这一笔真的浓厚。。。

一、中括号

Model 类里[Key]这个东西,类似于JAVA里的反射,ASP.NET:类中使用中括号([...])的作用。该标记不起任何实际作用,仅是告诉vs该语句下面的方法(Method)是ObjectDataSource的默认绑定方法,标记的作用是为了让编译器更好的为 ObjectDatasource 向导找到合适的方法。但是要加上using System.ComponentModel.DataAnnotations;这条引用。

二、/// <summary>

C#中在注释函数的时候连用3个斜杠,即“///”编译器会自动生成函数相关的注释段,但是需要具体的编译器代码提示,那还需要添加相应的内容。

先写好函数或方法,然后在函数或方法的上一行输入“///”后,系统会自动出来<summayr>.....</summary>以及参数等,在补全说明即可

三、datetime? 和 datetime 有什么区别

CSharp中,有两种类型的变量。

基本类型和引用类型

基本类型变量在定义一个变量的时候,不允许将该变量设置为null。但是在有的时候,我们又希望该基本类型拥有可以为null的能力。所以我们在该基本类型后面 加? 就可以将该基本类型变成应用类型。如 int => int? long => long? 等

此时 int? 定义的变量,就是应用类型了,可以为null,而不再是一个基本的类型。所有的基本类型转换成的引用类型,都有value这个属性,该属性是该应用的值。所有 datetime = datetime?.value

四、[HttpPost] 

System.Web.Mvc.dll中对它的注解是:表示一个特性,该特性用于限制操作方法,以便该方法仅处理 HTTP POST 请求。
具体来讲,就是在对于Mvc Controller中的方法,如果你希望该方法只能通过前台表单的Post方式来访问并且传输数据的话,通过添加[HttpPost]注解即可实现,这样,该方法就不会通过Get方法进行请求,限制了该操作方法的请求类型。

五、Repository模式

这个模式很深奥,在这里只能先列举一下简单的释义,随后再深入学习。

ASP.NET:EF安装 程序创建及开发模式

Repository模式

六、DbSet<TEntity>类和DbContext类

dbContext里面的dbset<TEntity>属性的多少 能对系统造成性能影响吗?

一语惊醒梦中人。看代码总是有dbset<TEntity>,但一直不知道是什么解释,今天搜到这个问题,原来是一个属性,或者是给定类型的所有实体的集合或可从数据库中查询的给定类型的所有实体的集合。 可以使用 DbContext.Set 方法从 DbContext 中创建 DbSet 对象。不过两个使用的区别是什么?

MVC中使用Entity Framework 基于方法的查询学习笔记 (二)

七、数据上下文

数据上下文,就是当前对象(主要是UI元素)与之绑定的数据对象。所有对该控件的数据绑定({Binding})如果不额外声明Source,则默认的Source就是DataContext指向的数据对象。可以理解为  DataSource

或者

数据上下文就是不止它自身可以访问,其子元素皆可访问。
比如有这么一个数据类型:
public class Person
{
    public int ID{get;set;}
    public string Name{get;set;}
    public int Age{get;set;}
    public string Address{get;set;}
}
将该类型的一个实例设置为某UserControl的DataContext;
this.DataContext = new Person();
那么在xaml中,binding时就是使用的这个上下文
<UserControl ...>
  <StackPanel>
      <TextBlock Text={Binding ID}/>
      <TextBlock Text={Binding Name}/>
      <TextBlock Text={Binding Age}/>
      <TextBlock Text={Binding Address}/>
  </StackPanel>
</UserControl>
你只是将Person对象赋给了UserControl的DataContext,但是其内部的TextBlock依然可以访问得到这个对象的属性。

八、virtula与override

在基类(父类)中用virtual修饰符声明一个虚方法,然后在在派生类(子类)中用override修饰符覆盖基类虚方法。表明是对基类的虚方法重载。这种优势在于它可以在程序运行时再决定调用哪一个方法,这就是所谓的“运行时多态”或者称动态绑定。

九、~

这是什么?!C#里的各种符号也是醉了。。。

析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。

十、 seal

1、当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。 在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。

class A {}

sealed class B : A {}

2、还可以在重写基类中的虚方法或虚属性的方法或属性上使用 sealed 修饰符。 这将使您能够允许类从您的类继承,并防止它们重写特定的虚方法或虚属性

在下面的示例中,Z 从 Y 继承,但 Z 无法重写在 X 中声明并在 Y 中密封的虚函数 F。

class X
    {
        protectedvirtualvoid F() { Console.WriteLine("X.F"); }
        protectedvirtualvoid F2() { Console.WriteLine("X.F2"); }
    }
    class Y : X
    {
        sealedprotectedoverridevoid F() { Console.WriteLine("Y.F"); }
        protectedoverridevoid F2() { Console.WriteLine("X.F3"); }
    }
    class Z : Y
    {
        // Attempting to override F causes compiler error CS0239.
        // protected override void F() { Console.WriteLine("C.F"); }
        // Overriding F2 is allowed.
        protectedoverridevoid F2() { Console.WriteLine("Z.F2"); }
    }
十一、=>
又一个符号,明白了就觉得好用,不明白的看着这么个玩意真的很蛋疼!

Lambda表达式详解

十二、委托+=

感觉C#后面加了#就是个坑啊,语言名字就带上符号了,里面指不定还有多少符号。。。

c#委托

先mark一下,眼睛疼,睡觉去。

ASP.NET MVC网站学习问题积累(一)的更多相关文章

  1. ASP.NET Core MVC 网站学习笔记

    ASP.NET Core MVC 网站学习笔记 魏刘宏 2020 年 2 月 17 日 最近因为” 新冠” 疫情在家办公,学习了 ASP.NET Core MVC 网站的一些知识,记录如下. 一.新建 ...

  2. ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解

    原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开M ...

  3. ASP.NET MVC 5 学习教程:修改视图和布局页

    原文 ASP.NET MVC 5 学习教程:修改视图和布局页 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...

  4. ASP.NET MVC基础学习

    ASP.NET MVC基础学习 传统的MVC概念 模型:组类,描述了要处理的数据以及修改和操作数据的业务规则 视图:定义应用程序用户界面的显示方式 控制器:一组类,用来处理来自用户,整个应用程序流以及 ...

  5. 关于linux asp.net MVC网站中 httpHandlers配置无效的处理方法

    近期有Jexus用户反映,在Linux ASP.NET MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404( ...

  6. ASP.NET MVC 网站开发总结(三) ——图片截图上传

    本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...

  7. Asp.net MVC网站的基本结构

    Asp.net MVC网站的基本结构:Controller->IBLL(定义业务接口)->BLL->DA(调用Utility)->数据库 ,其中A->B表示A调用B 1. ...

  8. ASP.NET MVC 5 学习教程:快速入门

    起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...

  9. 总结一下ASP.NET MVC 网站的部署问题

    总结一下ASP.NET MVC 网站的部署问题 近日,准备把MVC建了一个新的测试站点部署到IIS上面,结果没想到出现了一系列的问题和错误,准备记录一下. 第一个问题,就是如何将MVC的站点部署到II ...

随机推荐

  1. Sharepoint2013商务智能学习笔记之Excel Service展示Sql Server数据Demo(五)

    第一步,打开Excel新建空白工作簿 第二步,使用Excel连接sql 数据库 第三步,画图 第四步 添加筛选器 最后效果如下: 第五步,将Excel上传到sharepoint任意文档库,并直接点击 ...

  2. Linux系统及lvm知识

    一.磁盘分区是怎样表示的 IDE磁盘的设备文件采用/dev/hdx 来命名,分区则采用/dev/hdxy来命名,其中想表示磁盘(a是第一块磁盘,b是第二块磁盘,以此类推),与代表分区的号码(由1开始, ...

  3. 《OD学spark》20160925 Spark Core

    一.引言 Spark内存计算框架 中国Spark技术峰会 十二场演讲 大数据改变世界,Spark改变大数据 大数据: 以Hadoop 2.x为主的生态系统框架(MapReduce并行计算框架) 存储数 ...

  4. js默认事件汇总

    默认事件 就是浏览器通过HTML标签或DOM元素提供的一些功能性的默认行为.比如在a标签href属性上的跳转,右键呼出的菜单等等.我们可以通过js取消或更改这些默认事件. 取消默认事件 默认事件都是定 ...

  5. File类、递归

    File类.递归 1.1File类概述 java.io.File表示文件和目录路径名的抽象类.可以对文件和文件夹进行创建删除.获取.判断.遍历等功能. 1.2路径\文件分割符,相对路径绝度路径 1.2 ...

  6. 解决request中文乱码问题

    因为request请求都是ISO-8859-1,而jsp页面是采用UTF-8编码,所以当传递的参数有中文时,页面会出现乱码,但是可以将取到的数据通过String的构造函数使用指定的编码类型重新构造一个 ...

  7. [题解](排列/逆序对)luogu_P1338末日的传说

    首先我们要考虑怎么排能使逆序对数最多:显然是下降序列时,会产生n*(n-1)/2数量的逆序对 那么我们肯定是要尽量把序列的尾端安排成下降序列,前面的尽量不动,中间可能有一段排列自适应到m的逆序对数 然 ...

  8. 原生JS实现日历

    这周写自己的项目发现又用到日历了,加之自己毕业之后的第一个工作中遇到的任务也是需要写个日历(组员写了,我就不用写了) 今天就来好好折腾一下日历是怎么写的. 首先,我们看看 windows 的日历.发现 ...

  9. Django-- CRM1客户建表与装饰器

    一.CRM项目(1) 引入三个表:用户表,客户表,校区表,班级表,梳理逻辑关系并迁移数据库,生成表. 使用admin插入数据,admin是Django提供的web形式的后台数据管理页面,它是和用户认证 ...

  10. chapter09

    import java.io.File import java.nio.file._ import scala.collection.mutable.ArrayBuffer/** * Created ...