Asp.net MVC4 Step by Step (1)-路由,控制器,视图
注意:此文需要你有一定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帮助方法,这个不多说了,看到查帮助吧
Asp.net MVC4 Step by Step (1)-路由,控制器,视图的更多相关文章
- Asp.Net MVC4 系列--进阶篇之路由 (2)
上一篇介绍了Asp.Net MVC 中,从Http Pipeline上接收到请求如何匹配,匹配限制,以及如何控制在指定命名空间查找,解析出controller和action,并传参. 这篇主要介绍如何 ...
- Asp.Net MVC4 系列-- 进阶篇之路由(1)
创建一个路由 打开 RouteConfig.cs ,发现已经创建了一个默认路由 : routes.MapRoute( name:"Default", url:"{con ...
- Asp.Net MVC4 系列-- 进阶篇之路由
原文 http://blog.csdn.net/lan_liang/article/details/22993839 创建一个路由 打开 RouteConfig.cs ,发现已经创建了一个默认路由 ...
- Asp.Net MVC4 系列-- 进阶篇之路由(1)【转】
http://blog.csdn.net/lan_liang/article/details/22993839?utm_source=tuicool
- ASP.NET MVC4 新手入门教程之六 ---6.编辑视图与编辑方法
在本节中,您会为电影控制器检查生成的操作方法和视图.然后,您将添加一个自定义的搜索页面. 运行该应用程序,然后浏览到Movies控制器通过将/Movies追加到您的浏览器的地址栏中的 URL.将鼠标指 ...
- ASP.NET MVC4 新手入门教程之三 ---3.添加视图
在这一节你要修改HelloWorldController类要使用的视图模板文件来干净封装生成 HTML 响应到客户端的过程. 您将创建一个使用Razor 视图引擎介绍 ASP.NET MVC 3 的视 ...
- ASP.NET MVC轻教程 Step By Step 8——路由
在前面的教程里,细心的你可能会有个疑问,就是地址栏输入/Home/Write就可以进入留言页面.无论是静态HTML还是ASP/ASP.NET.PHP,URL都是和某个页面相关.比如假设有个URL是“w ...
- Asp.net MVC4 Step By Step(5)-使用Web API
Web API是ASP.net MVC4新增的一个特色, 应用于处理Ajax请求, 他同时使用了Web标准规范, 比如Http, Json,和XML,以及一系列构建REST数据服务的参考原则, 和AS ...
- Asp.Net Core 5 REST API - Step by Step
翻译自 Mohamad Lawand 2021年1月19日的文章 <Asp.Net Core 5 Rest API Step by Step> [1] 在本文中,我们将创建一个简单的 As ...
- [转]Bootstrap 3.0.0 with ASP.NET Web Forms – Step by Step – Without NuGet Package
本文转自:http://www.mytecbits.com/microsoft/dot-net/bootstrap-3-0-0-with-asp-net-web-forms In my earlier ...
随机推荐
- svn 使用TortoiseSVN server搭建本地SVN服务器
使用TortoiseSVN server搭建本地SVN服务器
- nlogn求LIS(树状数组)
之前一直是用二分 但是因为比较难理解,写的时候也容易忘记怎么写. 今天比赛讲评的时候讲了一种用树状数组求LIS的方法 (1)好理解,自然也好写(但代码量比二分的大) (2)扩展性强.这个解法顺带求出以 ...
- Android一键换肤功能:一种简单的实现
Android一键换肤功能:一种简单的实现 现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,这里有一个开源实现,我找了一大堆,发现这个项目相对较为简洁:htt ...
- ZooKeeper常用命令行工具及使用(转)
一.服务端 bin目录下常用的脚本解释 zkCleanup:清理Zookeeper历史数据,包括食物日志文件和快照数据文件 zkCli:Zookeeper的一个简易客户端 zkEnv:设置Zookee ...
- hibernate分表保存日志
@Service("accessLogService")@Transactionalpublic class LogMessageServiceImpl extends BaseD ...
- linux系统读写缓存
1. 操作系统缓存 在linux世界里,一切可读写设备都可看作是文件.文件cache设计的好坏直接影响着文件系统和磁盘的性能.最直观的是使用free命令看到的cached列. 这里面的cached列 ...
- python 函数和函数式编程
什么是函数 调用函数 创建函数 变长参数 函数式编程 变量的作用域 生成器 1 什么是函数 函数是对程序逻辑进行结构化或过程化的一种编程方法.能将整块代码巧妙地隔离成易于管理 的小块,把重复代码放到函 ...
- sleep与信号唤醒的问题 & 内核对信号的处理方式
注意,sleep是会被信号唤醒的. sleep函数:#include <unistd.h>unsigned int sleep(unsigned int seconds);此函数使调用 ...
- WCF学习笔记——配置服务引用
WCF传过来的东西要序列化. 比如,在WCF服务中,象这么个方法 public IEnumerable<UserItem> GetUserList() 默认情况下,在客户端会调用,是这样: ...
- mysql数据库字符编码修改
mysql数据库字符编码修改 修改数据库的字符集mysql>use mydb mysql>alter database mydb character set utf8; 创建数据库指定数据 ...