[译]添加一个控制器(C#) —— ASP.NET MVC3 电影示例教程之二

asp.net mvc3教程 

ASP.NET MVC3教程

ASP.NET MVC3 电影示例系列:共九篇  [文章列表]

这里的文章是ASP.NET官网的教程,这里做翻译而已,才疏学浅,翻译错误的地方,请指正,原文地址: Adding a Controller(C#)

 

  MVC 的全称是Model-View-Controller。MVC是一个良好架构,并容易维护的开发应用程序的模式.基于MVC的应用程序包括:

1. Controllers:是一些处理应用程序的传入请求,接受model数据,并且在此之后指定返回到客户端的响应的视图模板的类;

2. Models:代表应用程序中的数据,并且它使用验证逻辑来将业务逻辑实施于这些数据上;

3. Views:是你应用程序中用来动态生成HTML响应的模板文件。

我们将会在本系列教程中涵盖所有这些概念,并且想你展示如何用它们来构建一个应用程序。

让我们从创建一个控制类开始吧。在解决方案资源管理器中,右键Controllers文件夹,而后选择添加>控制器

asp.net mvc 3添加控制器类

将你的行控制器命名为“HelloWorldController”。让默认模板为空白控制器,并点击确定。

添加控制器的配置

注意,在解决方案资源管理器中已经创建了一个名叫HelloWorldController.cs的新文件。并且文件在IDE中打开了。

添加完控制器的ide状态

在public class HelloWorldController的代码块里面,创建如下面代码这样的两个方法。该控制器将用返回一个HTML字符串来作为例子。

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...";
       
}
   
}
}

你的控制器被命名为HelloWorldController,并且上面的第一个方法被命名为Index。让我们通过浏览器来调用它。运行应用程序(按F5或者Ctrl + F5)。在浏览器中,将“HelloWorld”添加到地址栏中路径的后面。(例如,在下图中是http://localhost:43246/HelloWorld.)浏览器中显示的页面将看起来像下面这个截图。在上面的方法中,代码直接返回了一个字符串。你告诉系统仅返回这些HTML,并且它这么做了!

asp.net mvc 3控制器的使用测试

 ASP.NET MVC 依赖传入的URL来调用不同的控制器类(和不同的Action方法)。ASP.NET MVC 使用的默认映射逻辑是使用下面这样的格式来确定将调用什么代码:

/[Controller]/[ActionName]/[Parameters]

 URL中的第一个部分是用来确定要执行的控制器类。因此/HelloWorld 将映射到HelloWorldController类了。URL中的第二个部分是用来确定在类中需要执行的行为方法。在/HelloWorld/Index 中将会触发HelloWorldController中的Index方法的执行。需要注意的是我们只需要浏览到/HelloWorld,Index方法默认就会被调用。这是因为如果被调用的控制器中的方法没有被明确指明,将默认调用名为Index的方法。

 访问http://localhost:xxx/HelloWorld/Welcome.Welcome方法会执行并返回"This is the Welcome action method..."的字符串。MVC默认的映射是/[Controller]/[ActionName]/[Parameters]。对于这个URL,控制器是HelloWorld而Welcome是行为的方法。在这URL中,暂时还没有使用[Parameters]部分。

asp.net mvc 3 url 默认各部分的介绍

让我们来稍微修改下这个例子以便你可以通过URL传一些参数给控制器(如:/HelloWorld/Welcome?name=Scott&numtimes=4)。修改下你的Welcome方法,让它包含像下面这样的两个参数。需要注意代码中使用了C#可选参数的特性来指明当numTimes参数没有提供时,使用默认1(译注:C#的可选参数是C# 4.0新特性,具体可参看我的另外一篇文章:C#参数后面的冒号)。

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不同的值。系统自动将地址栏中QueryString的命名参数映射成你方法中的参数。

asp.net mvc 3 地址中参数的映射

在这两个例子中,控制器担当了MVC中的"VC"部分 —— 就是说,担当了View和Controller的工作。控制器直接返回HTML。一般情况下,你不会想要控制器直接返回HTML,因为这样将会使代码变得非常的笨重。我们在比较常用的反而是使用一个独立的View模板来协助生成HTML响应流。那么让我们看下下一章,我们是如何做到的吧。

 

 

Wednesday, April 18, 2012 |

关于博主

  一枚成分复杂的网络IT分子,属于互联网行业分类中的杂牌军。