最近工作压力比较大,不得已开始自学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. netty对http协议解析原理解析(转载)

    本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...

  2. 三层登录——C#版

    前言 前期了解三层架构主要是由UI层.BLL层和DAL层三部分构成.看到大牛们都采用三层的思想实现了登录,本菜鸟暗暗地站在了他们的肩膀上. 自己理解 对于三层自己的理解是:就像我们对一个大型的公司去找 ...

  3. uoj #185. 【ZJOI2016】小星星

    #185. [ZJOI2016]小星星 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有 nn 颗小星星,用 mm 条彩色的细线串了起来,每条细线连着两颗小星星.有一天她发现,她的饰品被破坏 ...

  4. Hadoop中解除 "Name node is in safe mode"的方法

    运行hadoop程序时,有时候会报以下错误,说明Hadoop的NameNode处在安全模式下. 原因分析: 在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文 ...

  5. Educational Codeforces Round 48 (Rated for Div. 2) B 1016B Segment Occurrences (前缀和)

    B. Segment Occurrences time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  6. > Task :app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED

    > Task :app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED D8: Cannot fit requested ...

  7. C语言中malloc函数的使用方法

    C语言中malloc是动态内存分配函数.函数原型:void *malloc(unsigned int num_bytes);参数:num_bytes 是无符号整型,用于表示分配的字节数.返回值:如果分 ...

  8. rgb值转换成16进制

    由于jQuery获取css中的background有时候是rgb值,所以往往需要一个转换函数. 以前觉得难,还写个博客记录,现在觉得好容易. let testColor = "rgb(20, ...

  9. 牛客假日团队赛1B.便便传送门(一)

    链接:https://ac.nowcoder.com/acm/contest/918/B 题意: Farmer John最讨厌的农活是运输牛粪.为了精简这个过程,他制造了一个伟大的发明:便便传送门!与 ...

  10. Win10文件无法重命名

    适用版本:Win10 Lenovo ideapad 310s 方法一:禁用所有开机启动项,重启 方法二:进入安全模式测试 方法三:新建一个账户