博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC 3 笔记
阅读量:5240 次
发布时间:2019-06-14

本文共 3197 字,大约阅读时间需要 10 分钟。

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.   视图取值时,VeiwBagViewDataTempData 都不区分大小写。

2.   使用 View() 方法指向其他 View 时,VeiwBagViewDataSession 可以取到值, 而 TempData 则取不到。

 

3)   Action Action

1.   Action取值时, TempData 不区分大小写。

2.   使用 RedirectToAction() 方法跳转其他 Controller Action 时,TempDataSession 可以取到值,而 VeiwBagViewData 则取不到。

 

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 程序集的 System.Web.WebPages.Html 命名空间中。

1)   Raw(string value) 方法

Ø  描述:返回不是 HTML 编码的标记

Ø  示例:

1.   输出一段 html js

1)   View

var var1 = '@("<span>span1</span>")';

var var2 = '@Html.Raw("<span>span1</span>")';

2)   结果:

var var1 = '&lt;span&gt;span1&lt;/span&gt;';

var var2 = '<span>span1</span>';

 

2)   BiginForm() 方法

Ø  描述:用于创建一个有开始和结束标签的form表单。

Ø  示例:

1.   输出一段输出 form 表单元素

1)   View

@using (@Html.BeginForm("Modify", "Home", FormMethod.Post)){}

2)   结果:

<form action="/Home/Modify/53" method="post"></form>

 

3)   TextBoxFor() 方法

Ø  描述:用于创建一个文本框。

示例:@Html.TextBoxFor(o => o.ATitle)

结果:<input id="ATitle" name="ATitle" type="text" value="阿桑地方123" />

 

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>

 

转载于:https://www.cnblogs.com/abeam/p/7872553.html

你可能感兴趣的文章
c/s与b/s 动态网站与静态网站 (网站编码统一“UTF-8”)
查看>>
2、SpringBoot整合
查看>>
springboot伪静态
查看>>
接口和抽象类的联系与区别
查看>>
【原创】 Docker 中 运行 ASP.NET Core 站点
查看>>
JS闭包
查看>>
第一次参加比赛的总结
查看>>
javascript中强制类型转换
查看>>
python学习笔记
查看>>
tpl
查看>>
session的简单使用
查看>>
shell 脚本实现的守护进程
查看>>
Nested Class Templates
查看>>
php+ajax(jquery)的文件异步上传
查看>>
使用&nbsp;SharedPreferences 分类: Andro...
查看>>
TLA+(待续...)
查看>>
c#数据结构(第四章)
查看>>
PHP 小方法之 计算两个时间戳之间相差的日时分秒
查看>>
python selenium 基本常用操作
查看>>
用ping命令简单的测试 延时、抖动、丢包率
查看>>