【译】ASP.NET MVC 5 教程 - 2:添加控制器
2014-02-26 10:51
363 查看
原文:【译】ASP.NET MVC 5 教程 - 2:添加控制器MVC 表示 模型-视图-控制器。MVC 是一种用于开发应用程序的模式,具备良好架构,可测试和易于维护。基于 MVC 应用程序中包含:
Models: 表示应用程序的数据,并使用验证逻辑强制执行业务规则的数据的类。
Views: 您的应用程序用来动态生成 HTML 响应的模板文件。
Controllers: 处理传入的请求的浏览器,类检索模型的数据,然后指定将响应返回到浏览器中的视图模板。
在这个系列教程中涵盖了所有这些概念和教你怎么使用它们构建应用程序。
让我们开始创建一个控制器类。在 解决方案资源管理器中,右键单击 Controllers 文件夹,然后单击 添加,然后支架。
添加支架对话框中,单击MVC 5 控制器-空,然后单击添加。
注意在 解决方案资源管理器 已创建的新文件命名HelloWorldController.cs。在 IDE 中打开该文件。
写入下面的代码:
示例中,控制器的类名为
ASP.NET MVC 会根据传入的 URL 调用不同的控制器类 (以及其中的不同操作方法)。ASP.NET MVC 所使用的默认 URL 路由逻辑使用这样的格式来确定哪些代码来调用:
在App_Start/RouteConfig.cs文件中可以设置路由的格式。
当您运行该应用程序并不提供任何 URL 部分时,它将默认的"Home"的控制器和上面代码的默认值部分中指定的"Index"的操作方法。
URL 的第一部分确定要执行的控制器类。所以 /HelloWorld 映射到
下面在浏览中打开 http://localhost:xxxx/HelloWorld/Welcome。
让我们将此示例稍微修改一下,以便您可以将一些参数信息从 URL 中传递给控制器 (例如, /HelloWorld/Welcome?name=Scott&numtimes=4)。更改您
运行您的应用程序,然后在浏览中打开 URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4)。在 URL 中您可以尝试不同的值
在上面的示例中,不使用 URL 段 (
Welcome方法替换为以下代码:
运行应用程序,然后输入以下 URL: http://localhost:xxx/HelloWorld/Welcome/3?name=Rick
这次 URL 的第三个部分匹配
在 ASP.NET MVC 应用程序中,这是默认的路由配置 (像刚才那样用 ID)。您也可以添加一个路由,这两个
在浏览器中打开
对于许多的 MVC 应用程序都默认路由来正常工作。稍后在本教程中,通过使用模型程序,数据,您将了解到,所以一般不必修改默认路由。
Models: 表示应用程序的数据,并使用验证逻辑强制执行业务规则的数据的类。
Views: 您的应用程序用来动态生成 HTML 响应的模板文件。
Controllers: 处理传入的请求的浏览器,类检索模型的数据,然后指定将响应返回到浏览器中的视图模板。
在这个系列教程中涵盖了所有这些概念和教你怎么使用它们构建应用程序。
让我们开始创建一个控制器类。在 解决方案资源管理器中,右键单击 Controllers 文件夹,然后单击 添加,然后支架。
添加支架对话框中,单击MVC 5 控制器-空,然后单击添加。
注意在 解决方案资源管理器 已创建的新文件命名HelloWorldController.cs。在 IDE 中打开该文件。
写入下面的代码:
using System.Web; using System.Web.Mvc; namespace MvcMovie.Controllers { public classHelloWorldController : Controller { // // GET: /HelloWorld/ public string Index() { return "This is my <b>default</b> action..."; } // // GET: /HelloWorld/Welcome/ public string Welcome() { return "This is the Welcomeaction method..."; } } }
示例中,控制器的类名为
HelloWorldController,继承于:Controller,上述第一种方法为
Index。让我们从浏览器中调用它。运行该应用程序 (按 F5 或 Ctrl + F5)。在浏览器中,将"HelloWorld"添加到地址栏上的路径后面 。(例如,在图中,它下面的 http://localhost:1234/HelloWorld.)页面在浏览器中的将看到如下图所示的页面。在上述方法中,代码直接返回一个字符串。
ASP.NET MVC 会根据传入的 URL 调用不同的控制器类 (以及其中的不同操作方法)。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"的操作方法。
URL 的第一部分确定要执行的控制器类。所以 /HelloWorld 映射到
HelloWorldController类。第二部分 URL 的确定要执行的类上的操作方法。所以 /HelloWorld/Index会找到
HelloWorldController类的
Index的方法执行。请注意,我们只在浏览器中看到 /HelloWorld,而并无
Index。这是因为命名
Index的方法被指定一个称为控制器的默认方法。URL 段 (
Parameters) 的第三部分是用于路由数据。我们将在本教程中稍后看到路由配置的资料。
下面在浏览中打开 http://localhost:xxxx/HelloWorld/Welcome。
Welcome方法运行,并返回字符串"This is my default action..."。MVC 的默认映射是
/[Controller]/[ActionName]/[Parameters]。对于这个 URL,控制器是
HelloWorld,而
Welcome是操作方法。您还没有使用 URL 的
[Parameters]部分。
让我们将此示例稍微修改一下,以便您可以将一些参数信息从 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); }
运行您的应用程序,然后在浏览中打开 URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4)。在 URL 中您可以尝试不同的值
name和
numtimes。在ASP.NET MVC 模型绑定系统 从地址栏中命名的参数将自动映射给您的方法中指定的参数。
在上面的示例中,不使用 URL 段 (
Parameters),作为查询字符串传递的
name和
numTimes参数。
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,因为
Welcome的操作方法有一个匹配的 URL 规范在
RegisterRoutes方法中的参数 (
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)。您也可以添加一个路由,这两个
name传递给 和
numtimes作为路由数据的 URL 中的参数。在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}" ); } }
在浏览器中打开
/localhost:XXX/HelloWorld/Welcome/Scott/3.
对于许多的 MVC 应用程序都默认路由来正常工作。稍后在本教程中,通过使用模型程序,数据,您将了解到,所以一般不必修改默认路由。
相关文章推荐
- 【译】ASP.NET MVC 5 教程 - 2:添加控制器
- ASP.NET MVC 5 学习教程:添加控制器
- ASP.NET MVC 5 学习教程:添加控制器
- 【译】ASP.NET MVC 5 教程 - 9:添加新字段
- ASP.NET MVC 右键点击添加没有区域(Area)、控制器、试图等选项
- ASP.NET MVC教程:理解模型、视图和控制器(2)
- ASP.NET MVC 5 入门教程 (2) 控制器Controller
- ASP.NET MVC 5 学习教程:添加模型
- 【译】ASP.NET MVC 5 教程 - 10:添加验证
- 【译】ASP.NET MVC 5 教程 - 10:添加验证
- ASP.NET MVC 5 学习教程:控制器传递数据给视图
- ASP.NET MVC教程:理解模型、视图和控制器(3)
- [译]ASP.NET MVC 5入门 添加控制器
- ASP.NET MVC Music Store教程(2):控制器
- Easyui + asp.net MVC 系列教程 第19-23 节 完成注销 登录限制过滤 添加用户
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- ASP.NET MVC教程:理解模型、视图和控制器(4)
- ASP.NET MVC 5 学习教程:通过控制器访问模型的数据
- ASP.NET MVC 5 学习教程:数据迁移之添加字段
- ASP.NET MVC教程:理解模型、视图和控制器(5)(完)