.Net MVC5 Controller
2015-01-29 15:05
375 查看
1. 创建Controller
添加完成之后,一个控制器文件[b]HelloWorldController.cs和一个新的文件夹Views\HelloWorld被添加到工程中。[/b]
[b]同时该控制器代码在编辑区域被打开。
[/b]
2. 返回字符串的Controller
关注重点:
1.创建的controller类必须实现controller接口(在新建是自动加上了的)。
2.可以直接使用url请求该controller。例如使用:http://localhost:1234/HelloWorld/就可以直接请求HelloWorld这个控制器下的index方法(默认是index)
3.
路由匹配规则可以在App_Start/RouteConfig.cs中进行配置及修改,例如:
此处的路由规则就是controller/action(即方法)/id,默认值分别未“home”,“index”。也就是说当url为:localhost:1234/[/u] 时请求的是“Home”。
4. 请求参数(query
strings)接收,以welcome方法为例。访问url:localhost:1234/HelloWorld/Welcome?name=Scott&numtimes=4/[/u]可以得到如下结果:
5.路由数据接收,此时将welcome方法修改为:
访问url:localhost:1234/HelloWorld/Welcome/3?name=Scott/可以得到如下结果:
因为根据路由规则url中第三个为路由数据ID,所以ID即接收为3。ASP
.Net MVC中建议使用路由数据传递参数,而不是使用query string。所以为了达到使用路由数据传递参数的目的,我们可以添加自定义的路由规则:
//自定义路由规则
routes.MapRoute(
<span style="white-space:pre"> </span>name: "Colin",
<span style="white-space:pre"> </span>url: "{controller}/{action}/{name}/{id}"
);
此处的name只是方便我们区分是哪个路由。路由规则根据格式和参数自行匹配。例如,一个新的url请求,其中包含了两个路由数据:localhost:49734/HelloWorld/RouteDataTest/Scott/3/[/u]根据路由规则,name=Scott同时id=3,所以得到如下结果:
路由规则的匹配先后顺序:controller > action > 路由数据的参数名。路由数据的值被自动赋值到具有相同名称的方法参数上。
6. 目前为止涉及到的controller action的返回类型都是string型的,相当于直接输出简单的html到浏览器。然而,正常情况应该是提供数据给View端,view端情况之后继续~
添加完成之后,一个控制器文件[b]HelloWorldController.cs和一个新的文件夹Views\HelloWorld被添加到工程中。[/b]
[b]同时该控制器代码在编辑区域被打开。
[/b]
2. 返回字符串的Controller
using System.Web;using System.Web.Mvc; namespace MvcMovie.Controllers { public class HelloWorldController : Controller { // // GET: /HelloWorld/ public string Index() { return "This is my <b>default</b> action..."; } // // GET: /HelloWorld/Welcome/
public string Welcome(string name, int numTimes = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes); }} }
关注重点:
1.创建的controller类必须实现controller接口(在新建是自动加上了的)。
2.可以直接使用url请求该controller。例如使用:http://localhost:1234/HelloWorld/就可以直接请求HelloWorld这个控制器下的index方法(默认是index)
3.
路由匹配规则可以在App_Start/RouteConfig.cs中进行配置及修改,例如:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
此处的路由规则就是controller/action(即方法)/id,默认值分别未“home”,“index”。也就是说当url为:localhost:1234/[/u] 时请求的是“Home”。
4. 请求参数(query
strings)接收,以welcome方法为例。访问url:localhost:1234/HelloWorld/Welcome?name=Scott&numtimes=4/[/u]可以得到如下结果:
5.路由数据接收,此时将welcome方法修改为:
public string Welcome(string name, int ID = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", ID: " + ID); }
访问url:localhost:1234/HelloWorld/Welcome/3?name=Scott/可以得到如下结果:
因为根据路由规则url中第三个为路由数据ID,所以ID即接收为3。ASP
.Net MVC中建议使用路由数据传递参数,而不是使用query string。所以为了达到使用路由数据传递参数的目的,我们可以添加自定义的路由规则:
//自定义路由规则
routes.MapRoute(
<span style="white-space:pre"> </span>name: "Colin",
<span style="white-space:pre"> </span>url: "{controller}/{action}/{name}/{id}"
);
此处的name只是方便我们区分是哪个路由。路由规则根据格式和参数自行匹配。例如,一个新的url请求,其中包含了两个路由数据:localhost:49734/HelloWorld/RouteDataTest/Scott/3/[/u]根据路由规则,name=Scott同时id=3,所以得到如下结果:
路由规则的匹配先后顺序:controller > action > 路由数据的参数名。路由数据的值被自动赋值到具有相同名称的方法参数上。
6. 目前为止涉及到的controller action的返回类型都是string型的,相当于直接输出简单的html到浏览器。然而,正常情况应该是提供数据给View端,view端情况之后继续~
相关文章推荐
- ios--NavigationViewController返回并刷新UITableView页面
- UITabBarController
- iOS 获取当前最上层ViewController
- ViewController
- Controller与 View之间的值传递
- @RestController
- AngularJs学习:何时应该使用Directive、Controller、Service?
- iOS UIPageViewController - 使用总结
- restful风格,restcontroller与controller
- iOS -UINavigationControllerPush动画丢失
- iso uinavigationcontrollerdemo2
- Ambiguous mapping found. Cannot map 'xxxxController' bean method
- ASP.NET MVC5学习笔记之Controller执行ControllerDescriptor和ActionDescriptor
- ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
- spring mvc的controller识别同一个form表单的多个submit按钮问题以及相关处理
- UIImagePickerController--------图片选取器
- Spring MVC Controller与jquery ajax请求处理json
- UISearchController与UITableView相互使用的小坑
- iOS之Custom UIViewController Transition
- 【起航计划 025】2015 起航计划 Android APIDemo的魔鬼步伐 24 App-&gt;Notification-&gt;Notifying Service Controller service中使用Notification