本文共 2959 字,大约阅读时间需要 9 分钟。
一、ASP.NET MVC概述
1、什么是ASP.NET MVC?
ASP.NET MVC是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架。
是微软继ASP.NET WebForm后的又一种开发方式,而非替代方式。
2、官方网站和源码网站?
官方网站:
源码网站:
3、ASP.NET MVC的特点?
1)、分离任务
2)、可扩展
3)、强大的URL重写(路由)机制
4)、兼容ASP.NET现有的技术
5)、开源
4、ASP.NET MVC的优点?
1)、通过把项目分为model、view和controller,使得复杂项目更加容易维护。
2)、没有使用viewstate和服务器表单控件,可以更方便的控制应用程序的行为。
3)、应用程序通过controller来控制程序请求,可以提供丰富的url重写。
4)、支持测试驱动开发,英文全称Test-Driven Development,简称,是一种不同于传统的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。
5)、在团队模式下表现更加出众。
5、为什么我们需要ASP.NET MVC?
1)、关注点分离
2)、高扩展性
3)、更好的可测试性
4)、更好的URL重写
5)、更好的性能
6)、更加灵活的HTML代码控制
...
6、Razor视图引擎?
Razor视图引擎是对以代码为焦点的方法实现,其特点如下:
1)、简洁、富于表现、流畅,尽量减少编写一个视图模板所需要敲入的字符数,实现快速流畅的编程工作。不必为了明确标记出服务模块的开始和结束而中断编程,Razor解析器能从你的代码中自动推断出来。
2)、易于学习,熟悉现有的编程语言和HTML技能就能快速学会。
3)、可以在任何文本编辑器中工作。
4)、VS IDE对其增加了智能提示。
5)、支持单元测试。
7、ASP.NET MVC请求处理过程?
8、ASP.NET MVC3与MVC4 知识点?
9、ASP.NET MVC与Web Form区别?
二、ASP.NET MVC编程要点
1、@Html.DisplayNameFor(mode=>model.Name),默认会直接输出属性名称,如果属性名称想要显示中文,可在类属性定义一个System.ComponentModel下DisplayName属性,如:
[DisplayName(“名称”)]
public string Name {get;set;}
使用Razor语法输出属性,默认所有数据都会使用HTML编码(HtmlEncode)输出,这是出于程序安全考虑,可避免网页遭受跨网站脚本攻击(Cross-Site ScriptingAttach)。
2、@model IEnumerable<命名空间.类名>
3、@{ ViewBag.Title=”页面标题”;}
4、@Html.ActionLink(“Create New”,”Create”)
5、@Html.ActionLink(“Edit”,”Edit”,new{id=item.Id})
用来输出超链接,第一个参数是链接显示文字,第二个参数是链接的目的Action名称,第三个参数代表路由参数id。这样MVC在输出超链接时,会加上要传给下一页的路由参数,MVC知道传入{controller}与{action}路由参数外,还给予{id}路由值。
Controller里有两个同名的方法,一个给HTTP GET方法用的,另一个是给HTTP POST方法用的。有HttpPost属性的会告知MVC框架此动作只会接收HTTP POST过来的信息,这个属性称为动作过滤器(Action Filter)或者动作选择器(Action Selector)。
// GET: /Home/Create
public ActionResultCreate()
{
return View();
}
// POST: /Home/Create
[HttpPost]
public ActionResultCreate(Collectorcollector)
{
if (ModelState.IsValid)
{
db.Collectors.Add(collector);
db.SaveChanges();
returnRedirectToAction("Index");
}
returnView(collector);
}
6、Html.BeginForm()方法,该辅助方法将会输出<form>标签,而且必须以using包起来,如此便可在using程序代码最后退出后,让MVC补上</form>标签。
@using (Html.BeginForm()) {}
@Html.ValidationSummary(true)用来显示当表单域发生验证失败时,显示的错误消息。
@Html.LabelFor(model=>model.Name)用来显示特定字段的显示名称,会输出包含<label>标签的域名,它与@Html.DisplayNameFor(model=>model.Name)的区别如下图所示:
@Html.EditorFor用于输出表单域
@Html.ValidationMessageFor用于显示字段验证的错误消息。
在Model类中,需要必填属性上加一个System.ComponentModel.DataAnnotations命名空间下的Required属性,如下所示:
[Required]
public string Name {get;set;}
这是MVC引入了一种Unobtrusive的JavaScript开发风格。
跳转Action,当前Action名为Create,语法如下:
return RedirectToAction(“Index”);
ModelState.IsValid用来判断在模型(Model)的验证状态是否有效,如果验证都没有问题,就可以利用Entity Framework标准的方法将数据写入数据库。
@Html.HiddenFor(model=>model.ID),该辅助方法主要用来生成HTML窗体的隐藏域。
路由Routing---网址路由,主要有2个目的:
1)、比对通过浏览器传过来的HTTP请求。
2)、响应适当的网址给客户端浏览器。
客户端请求->URI Routing->Route->RouteHandler->HttpHandler
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
所有*.axd结尾的网址通常都代表着其中一个HttpHandler,如在ASP.NET WebForm中常用的WebResource.axd就是其中一个常见的HttpHandler。为了不让MVC把这些*.axd的HttpHandler视为MVC运行起来,所以必须添加这条IgnoreRoute规则,将其排除在MVC运行生命周期之外。