注意:此文需要你有一定Asp.net MVC的基础,很多东西省略了,只是做个提要笔记形式。
要创建一个ASP.NET MVC的Web应用,首先要去下载ASP.NET MVC框架, 可以访问ASP.NET 官方网站,http://www.asp.net/mvc下载一个web平台安装器,
环境:
- VS2010,
- MySQL 5.6
- Entity Framework 5
- .NET 4.0
创建一个新的项目
选择Razor视图引擎,这是一个新的页面标签语法,后面会介绍
创建完成,项目结构式如下所示
这里面,要首先要了解的是“路由”, “控制器”, “视图”, “ 模型”, 视图和控制器是属于UI层, 因为, 控制器只应该包含UI逻辑,而不包含业务逻辑, 数据和业务逻辑放在模型里面。 这个是和以前的WebForm开发有关系而又不同的地方。
路由--负责确定由哪个控制器操作来处理待定的URL请求,
它有三个元素
Unique name, 路由的唯一名字。
URL pattern, 将URL解析成有意义词语的简单模式语法。
Defaults, URL模式里定义的参数变量的默认值。
Constraints, 为URL匹配模式定义更严格的约规则
打开App_Start文件夹下的RouteConfig.cs文件可以看到以下内容
这是默认MVC项目添加的一个通用路由,UrlParameter.Optional的意思是可选的,如果有参数就取参数值,如果没有也可以。
控制器--就是包含被路由请求时调用方法的类,
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "修改此模板以快速启动你的 ASP.NET MVC 应用程序。";
return View();
}
public ActionResult About()
{
ViewBag.Message = "你的应用程序说明页。";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "你的联系方式页。";
return View();
}
}
}
这个HomeController控制器类包含了三个操作Index, About, Contact, 当使用刚才的默认路由时,当请求/Home/About, 框架就会寻找HomeController这个类中的About方法来处理请求。
尽管每个控制器都要返回ActionResult, 但是大部分时间不需手动完成, 这个没明白什么意思。
System.Web.Mvc.Controller基类提供的帮助方法说明如下
-
Content()返回文本类型的ContentResult, 比如“Hello, World!”。
-
File()返回文件类型的内容FileResult, 比如PDF。
-
HttpNotFound() 返回包含404HTTP状态吗的HttpNotFoundResult。
-
JavaScript() 返回包含Javascript内容的JavaScriptResult, 比如“function hello(){alert(Hello, World!);}”。
-
Json () 返回JSON格式数据的JsonResult, 比如“{“Message”:Hello, World!}”。
-
PartialView() 返回包含部分视图内容的PartialViewResult。
-
Redirect()返回一个包含302跳转状态值RedirectResult, 跳转到给定的URL上。 例如, “302 http://…..”,
-
RedirectToAction()和RedirectToRoute() 与Redirect()类似,只有框架可以动态查询路由引擎来确定外部的URL.
-
View() 返回渲染视图的ViewResult。
视图--这个比较讨厌,视图就是返回给用户的页面
ASP.NET MVC 将会使用控制器提供的名字。去Views目录下面去找, 举例来说, HomeController的Index()操作方法如下:
public ActionResult Index() { ViewBag.Message = "修改此模板以快速启动你的 ASP.NET MVC 应用程序。"; return View(); //这里无参调用View ,就会去找一个和操作方法同名的视图,先在Views下的Home目录找,找不到再到Shared目录下找。 }
使用Razor语法的视图,要区分代码段@{},和代码块@XXX,区别是代码段是简单表达式,返回标记代码给视图渲染。
可以在控制器方法里面,使用ViewBag 或ViewData 从控制器向视图传递数据
除了基本的字典行为, ViewData对象也提供了Model属性,这是请求的原始模型对象
public ActionResult About()
{
ViewBag.Message = "你的应用程序说明页。";
//ViewBag.CompanyName = "Ebuy: The ASP.NET MVC Demo Site";
//ViewBag.CompanyDescription = "Ebuy is the world leader in ASP.NET MVC demoing!";
var company = new CompanyInfo
{
Name = "Ebuy: The ASP.NET MVC Demo Site",
Description = "Ebuy is the world leader in ASP.NET MVC demoing!",
};
return View("About" , company);
}
这里View方法的第二个参数company就是要赋值给ViewData.Model属性的对象, 在About.cshtml中,Razor语法直接使用@model声明,指定company就是Model类型。
HTML和URL帮助方法,这个不多说了,看到查帮助吧