ASP.NET MVC 5:添加控制器
来源:互联网 发布:ubuntu下lamp环境搭建 编辑:程序博客网 时间:2024/05/17 08:12
原文: Adding a Controller | Microsoft Docs
搭建好开发环境 Getting Started with ASP.NET MVC 5 | Microsoft Docs
Adding a Controller
2013-10-17 - 6 min to read - Contributors
by Rick Anderson
MVC代表model-view-controller。MVC是开发应用的架构模式,可测性和易于维护。基于MVC的应用程序包含:
* **M**odels: 表示应用程序数据并使用验证逻辑为该数据强制执行业务规则的类。
* **V**iews: 应用程序动态生成HTML响应的模板文件。
* **C**ontrollers: 处理传入的浏览器请求、检索模型数据,然后指定返回浏览器响应的视图模板的类。
我们将在本系列教程中介绍所有这些概念,并展示如何使用它们构建应用程序。
让我们开始创建一个控制器类。在“解决方案资源管理器”中,右键单击“控制器”文件夹,然后单击“添加”,然后单击“控制器”
在“添加脚手架”对话框中,单击MVC 5 Controller - Empty
,然后单击“添加”。
命名控制器为“HelloWorldController”,并单击“添加”。
Notice in Solution Explorer that a new file has been created named HelloWorldController.cs and a new folder Views\HelloWorld. The controller is open in the IDE.
注意在解决方案资源管理器中,已经创建了一个名为HelloWorldController.cs的文件和一个文件夹Views\HelloWorld
。在IDE中打开了该控制器:
用以下代码替换文件的内容:
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() { return "This is the Welcome action method..."; } } }
作为示例,控制器方法将返回一个HTML字符串。该控制器名称为HelloWorldController和第一个方法叫Index
。让我们从浏览器中调用它。运行应用程序(按F5或Ctrl + F5)。在浏览器中,在地址栏输入路径“HelloWorld”。(例如,http://localhost:1234/HelloWorld. )在浏览器中,页面会看起来像下图。在上面的方法中,直接返回字符串。让HelloWorldController只返回一些HTML,它做到了!
ASP.NET MVC根据输入的URL,调用不同的控制器类和其中不同的方法(action methods)。ASP.NET MVC默认URL路由使用这样的格式来确定调用具体的代码:
/[Controller]/[ActionName]/[Parameters]
在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 } );}
当运行应用程序并且不提供任何URL参数时,默认指定“Home”控制器和名为“index”的action方法。
URL的第一部分决定要执行哪一个控制器类。所以/HelloWorld
映射到HelloWorldController类。URL的第二部分决定要执行的类上哪一个action方法。因此/HelloWorld/Index
指定了HelloWorldController类
的index
的方法。注意,只需要输入/HelloWorld
将会默认执行index
方法。这是因为index
方法是默认方法。如果没有显式指定,控制器会默认调用。URL第三部分是路由数据(参数),将在后面介绍它。
访问http://localhost:xxxx/HelloWorld/Welcome
。Welcome
方法运行并返回字符串“This is the Welcome action method…”。默认MVC映射为/[Controller]/[ActionName]/[Parameters]
。这个URL,HelloWorld
是控制器,而Welcome
是动作方法(action method)。还没有使用URL的[参数]部分。
让我们稍稍修改下例子,传递一些参数信息给的控制器(例如,/HelloWorld/Welcome?name=Scott&numtimes=4
)。Welcome方法改为包含两个参数,如下所示。请注意,代码采用了C#可选参数特性。如果没有传递值给参数,numTimes将默认为1。
public string Welcome(string name, int numTimes = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);}
注意
安全注意:上面的代码使用HttpServerUtility.HtmlEncode保护应用免受恶意输入(即JavaScript)。有关更多信息,请参见如何:通过对字符串应用HTML编码来保护Web应用程序中的脚本攻击。
运行应用程序,访问URL( http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4 )。可以在URL中尝试不同name
和numtimes
的值。ASP.NET MVC模型绑定系统自动从地址栏中映射,查询字符串中的命名参数(name, numTimes)到方法参数Welcome(string name, int numTimes = 1)
。
在以上示例中,URL片段(参数)没有使用,numtimes参数作为查询字符串传递。在上面的URL,?(问号)是一个分隔符,紧接着就是查询字符串。&连接查询字符串的字符。
用以下代码替换Welcome
方法:
public string Welcome(string name, int ID = 1){ return HttpUtility.HtmlEncode("Hello " + name + ", ID: " + ID);}
运行应用程序,访问URL:
http://localhost:xxx/HelloWorld/Welcome/3?name=Rick
这一次的URL第三部分匹配参数ID。在RegisterRoutes方法中,Welcome动作方法包含一个匹配的URL规范的参数(ID)。
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 } );}
在ASP.NET MVC应用程序中,通过参数来访问数据(像ID参数一样),比作为查询字符串传递给方法,更加典型。你也可以在URL添加name和numtimes来路由数据。在App_Start\RouteConfig.cs
文件,添加“Hello”路由:
public class RouteConfig{ 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 } ); routes.MapRoute( name: "Hello", url: "{controller}/{action}/{name}/{id}" ); }}
运行应用程序,访问URL:
/localhost:XXX/HelloWorld/Welcome/Scott/3.
在大多数MVC应用程序,默认路由正常工作。在本教程后续学习中,使用模型绑定器(model binder)传递数据,并且不必修改默认路由。
在这些例子中,控制器一直在做MVC的“VC”部分,也就是视图和控制器的工作。控制器直接返回HTML。通常,你不希望控制器直接返回HTML,因为代码变得非常繁琐。相反,我们通常使用一个单独的视图模板文件来生成HTML。让我们看下如何做到这一点。
- ASP.NET MVC 5:添加控制器
- ASP.NET MVC 5 - 控制器
- ASP.NET MVC 5 - 控制器
- ASP.NET MVC 5 - 控制器
- Asp.Net MVC 控制器
- Asp.Net MVC 控制器
- Asp.Net MVC 控制器
- Asp.Net MVC 控制器
- Asp.net mvc 控制器
- 【ASP.NET MVC】控制器
- ASP.NET MVC 5 - (2)控制器
- ASP.NET MVC 5 -从控制器访问数据模型
- ASP.NET MVC 5 -从控制器访问数据模型
- ASP.NET MVC 5 -从控制器访问数据模型
- ASP.NET MVC 5 -从控制器访问数据模型
- ASP.NET MVC 5 - 添加一个模型
- ASP.NET MVC 5 - 添加一个模型
- ASP.NET MVC 5 - 添加一个模型
- JavaScript基础知识
- TensorFlow之线性回归
- POJ 1001 Exponentiation【高精度用java】
- Node.js文件的同步异步事件循环
- 图的基本操作(数据结构)
- ASP.NET MVC 5:添加控制器
- Java_性能优化_推荐使用String直接量赋值
- 根据详细地址获取经纬度
- 18位md5加密算法解密方法解 adminpwd=Mid(md5(adminpwd,32),4,18
- ubuntu14.04关机卡死解决方案
- 代码分支及版本管理规范
- Oracle中rank() over, dense_rank(), row_number() 的区别
- mysql 5.5 安装配置方法图文教程
- 关于CI的服务器与最佳实践,这里有一些思考