ASP.NET MVC 3 笔记
1. MVC设计模式
Ø Model:是指要处理的业务代码和数据操作代码。
Ø View:主要用于跟用户打交道,并能够展示数据。
Ø Controller:可以看作是 Model 和 View 的桥梁。
Ø 优点:
1. 可以降低 Model(业务/数据)与 View(视图)之间的耦合关系。
2. 可以复用视图(同样的数据,可以使用不同的视图展示出来)。
2. MVC框架
Ø 遵循:约定大于配置。
1) 控制器:类命名以 Contoller 结尾,例如:HomeController。
2) 视图:将会在 Views文件夹下生成一个与控制同名的文件夹,例如:~/View/Home。
3) Action 方法:将会在 ~/View/Home 文件夹下生成一个与 Action 方法同名的*.cshtml 文件,例如:Index.cshtml。
3. MVC 传值
1) MVC 传值的方式:
1. VeiwBag: 数据类型为 dynamic,是一个动态数据类型。其生命周期为当前Controller 下的 Action 与 View、以及其他 View。
2. ViewData: 数据类型为 Syste.Web.Mvc.ViewDataDictionary<string, object>,是一个实现了 System.Collections.Generic.IDictionary<TKey, TValue> 接口的字典类型。其生命周期为当前Controller 下的 Action 与 View、以及其他 View。
注意:ViewBag 与 ViewData 数据可以共享?
3. TempData: 数据类型为 System.Web.Mvc.TempDataDictionary<string, object>,是一个实现了 System.Collections.Generic.IDictionary<TKey, TValue> 接口的字典类型。其生命周期为当前Controller 下的 Action 与 View,以及当前会话中的其他 Action,可以跨 Controller 与 Action。
4. Model: 数据类型为 System.Object, 是一个 object 类型。其生命周期为当前 Controller 下的 Action 与 View。
5. Session: 数据类型为 System.Web.HttpSessionStateBase, 是一个实现了 System.Collections.ICollection 与 System.Collections.IEnumerable 接口的 object 集合类型。其生命周期为会话结束前(默认为 20 分钟),可以跨 Controller 与 Action。
2) Action 与 视图
1. 视图取值时,VeiwBag、ViewData、TempData 都不区分大小写。
2. 使用 View() 方法指向其他 View 时,VeiwBag、ViewData、Session 可以取到值, 而 TempData 则取不到。
3) Action 与 Action
1. Action取值时, TempData 不区分大小写。
2. 使用 RedirectToAction() 方法跳转其他 Controller 或 Action 时,TempData、Session 可以取到值,而 VeiwBag、ViewData 则取不到。
4. MVC 视图基类
Ø 视图基类 WebPage,声明如下:
public abstract class WebPage : WebPageBase
{
protected WebPage();
public override HttpContextBase Context { get; set; }
public HtmlHelper Html { get; }
[Dynamic]
public dynamic Model { get; }
public ModelStateDictionary ModelState { get; }
public static void RegisterPageExecutor(IWebPageRequestExecutor executor);
public override void ExecutePageHierarchy();
protected override void InitializePage();
}
5. Html 属性(HtmlHelper 类)
Ø 该类位于 System.Web.WebPages.dll 程序集的 Sy" />
4) TextAreaFor() 方法
Ø 描述:用于创建一个文本域。
示例:@Html.TextAreaFor(ba=>ba.AContent,10, 60, null)
结果:<textarea cols="60" id="AContent" name="AContent" rows="10">阿桑地方123</textarea>
5) DropDownListFor() 方法
Ø 描述:用于创建一个下拉列表框。
示例:@Html.DropDownListFor(ba=>ba.ACate, ViewBag.ListCates as IEnumerable<SelectListItem>)
结果:<select data-val="true" data-val-number="字段 ACate 必须是一个数字。" data-val-required="ACate 字段是必需的。" id="ACate" name="ACate"><option value="2">cccccccc</option></select>
6) ActionLink() 方法
Ø 说明:用于创建一个超链接。
示例:@Html.ActionLink("返回", "Index", "Home")
结果:<a href="/">返回</a>
ASP.NET MVC 3 笔记的更多相关文章
- ASP.NET MVC学习笔记-----Filter2
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...
- ASP.NET MVC学习笔记-----Filter
ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...
- ASP.NET MVC学习笔记-----Filter(2)
接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用,它需要实现IActionFilter接口: public ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...
- 【MVC5】ASP.NET MVC 项目笔记汇总
ASP.NET MVC 5 + EntityFramework 6 + MySql 先写下列表,之后慢慢补上~ 对MySql数据库使用EntityFramework 使用域用户登录+记住我 画面多按钮 ...
- 【转】ASP.NET MVC学习笔记-Controller的ActionResult
1. 返回ViewResult public ActionResult Index() { ViewData["Message"] = "Welcome ...
- ASP.NET MVC学习笔记-----使用自定义的View Engine
我们都知道在ASP.NET MVC中自带了Razor View Engine,Razor十分的强大,可以满足我们绝大部分的需要.但是ASP.NET MVC的高度可扩展性,使我们可以使用自定义的View ...
- ASP.NET MVC学习笔记-----ActionInvoker
还是这张图: 当ControllerFactory生成Controller实例后,这时就需要使用ActionInvoker来选择调用一个合适的Action执行.ASP.NET MVC提供的基类Cont ...
- ASP.NET MVC 学习笔记(1)
从头开始系统地学习ASP.NET MVC 为什么要学习ASP.NET MVC?原因很多,可以先来看一下最早的ASP.NET WebForm的一些缺点: 传说中面试经常要问到的ASP.NET WebFo ...
随机推荐
- github上的面试库
https://yuchengkai.cn/docs/zh/frontend/#%E5%86%85%E7%BD%AE%E7%B1%BB%E5%9E%8B https://github.com/taiz ...
- p1184高手之在一起
P1184 题目背景 高手是可以复活的,这点我们大家都知道. 题目描述 高手列出了一个详尽的日程表,这次他要追求的则是一个心灵纯洁的小萝莉.他和她都是要上课的,但是也会有时间空闲,于是高手决定无时无刻 ...
- hdu 1907 (尼姆博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1907 Problem Description Little John is playing very ...
- hdu1394逆序数(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目大意:逆序数:即假设在数组a中,假如i<j,但是a[i]>a[j]. 现在有一个 ...
- 洛谷P3709 大爷的字符串
题意:多次求区间众数的出现次数. 解: 这题居然可以莫队...... 首先开个桶.然后还要开个数组,cnt[i]表示出现i次的数有多少个. 然后就可以O(1)修改了. #include <cst ...
- SWOT分析法——进行项目管理的高效方法
SWOT分析法是什么 SWOT分析法,即态势分析法,就是将与研究对象密切相关的各种主要内部优势.劣势和外部的机会和威胁等,通过调查列举出来,并依照矩阵形式排列,然后用系统分析的思想,把各种因素相互匹配 ...
- C++基础知识-Day8
2.类的作用域运算符 shadow 在我们之前讲的内容中,我们会发现一种情况,就是在我们在不同类中的打印函数我们都是尽量让其名字不同,那么为什么会有这种情况呢?首先我们来看一个函数 void func ...
- C语言#和##操作符使用方法
1.#操作符 1:#操作符用于预处理阶段,将宏参数转换为字符串,只有宏定义中使用(#define) 使用方法: #define STRING(x) #x printf( ...
- Qt ------ linux(ubuntu) 下用 linuxdeployqt 打包发布程序
https://github.com/probonopd/linuxdeployqt/releases 1.下载linuxdeployqt 2.把下载的文件放入 /usr/local/bin 内,并执 ...
- Qt ------ QFileDialog
QString strFile = QFileDialog::getOpenFileName(this,QStringLiteral("选择Excel文件"),"&quo ...