最近工作压力比较大,不得已开始自学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. UVa 11468 Substring (AC自动机+概率DP)

    题意:给出一个字母表以及每个字母出现的概率.再给出一些模板串S.从字母表中每次随机拿出一个字母,一共拿L次组成一个产度为L的串, 问这个串不包含S中任何一个串的概率为多少? 析:先构造一个AC自动机, ...

  2. 关于.net中的身份认证(AuthorizeAttribute)的问题

    引言 新公司当初面试的时候问了我很多用户验证的问题,这里就把我的对于验证的想法写一下,希望可以有一个系统的学习记录. 一.如何验证 B/S结构的请求是http请求,个人理解的http请求有两个特点:1 ...

  3. .NET Core 3.0 可回收程序集加载上下文

    一.前世今生 .NET诞生以来,程序集的动态加载和卸载都是一个Hack的技术,之前的NetFx都是使用AppDomain的方式去加载程序集,然而AppDomain并没有提供直接卸载一个程序集的API, ...

  4. 图像标注工具labelImg使用方法

    最近在做打标签的工作,为了与大家参考学习,总结了在windows的环境下,基于anaconda的图像标注工具labellmg的一种使用方法! 1 搭建anaconda 以前写过怎么搭建anaconda ...

  5. limit 检索记录行

    LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定 ...

  6. [Xcode 实际操作]五、使用表格-(4)设置UITableView单元格数据库源

    目录:[Swift]Xcode实际操作 本文将演示如何自定义表格的数据来源. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先添加 ...

  7. ios 自定义导航栏,开启侧滑返回手势

    自定义一个常用ListViewController .h文件 #import <UIKit/UIKit.h> @interface ListViewController : UIViewC ...

  8. Java 实现大转盘抽奖

    需要用到 JAVA中的Random()函数 注意:大转盘抽奖各奖项中奖概率之和为 1.奖品列表中的概率为累加概率,需要按照添加进列表的顺序进行累加,添加顺序不做要求. 实际中使用需要考虑奖品数量限制等 ...

  9. t.call is not a function

    js 写错了... 代码: $("form").each({$(this).submit(function(){return false;})}); 丢了一个 function() ...

  10. poj1082 Calendar Game (博弈)

    题意是:Adam和Eve两人做游戏,开始给出一个日期,截止日期是2011.11.4,游戏规则如下: 每个人只能将天数增加一天或者将月份增加一天.如果下个月没有这一天,那么只能增加天数. 游戏胜利定义为 ...