Fork me on GitHub

Adding a Controller

MVC代表 模型-视图-控制器 。MVC是一个良好的模式及易于测试和容易维护的架构基于MVC模式的应用程序包含有:

  • · Models: 应用程序代表数据和使用验证的逻辑强制执行业务规则类
  • · Views: 应用程序根据模板动态生成 HTML所使用的模板文件。
  • · Controllers: 处理浏览器的请求,获取数据模型,最后指定要响应浏览器请求的视图模板。

本文章中,我们将覆盖所有的这些概念,并告诉您如何使用它们来创建一个应用程序。

让我们先创建一个控制器类。在解决方案资源浏览器中,右键单击控制器文件夹,然后选择添加控制器选项。

我们我把心的控制器命名为”HelloWorldController”,保留默认的Empty MVC controller模板,并点击添加。

add controller

请注意,在解决方案浏览器中会创建一个名为HelloWorldController.cs的新文件。此文件会被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)页面在浏览器中的效果如下图所示。在上面的方法中,代码直接返回了一个字符串。你告诉程序只返回一些HTML,然而结果确实也这样做了!

ASP.NET MVC调用不同的控制器类(和它们之间不同的操作方法)依赖于根据传入的URL。ASP.NET MVC默认的URL路由格式以确定哪部分代码会被调用:
/[Controller]/[ActionName]/[Parameters]

第一部分的URL确定那个控制器类会被执行。因此 /HelloWorld映射到HelloWorldController控制器类。第二部分的URL确定要执行控制器类中的那个操作方法。因此 /HelloWorld/Index,会使得HelloWorldController控制器类的Index 方法被执行。请注意,我们只需要浏览 /HelloWorld路径,默认情况下会调用Index方法。如果没有明确的指定,Index方法会默认的被控制器类调用。

浏览http://localhost:xxxx/HelloWorld/Welcome。 Welcome方法会被运行并返回字符串:"This is the Welcome action method...”。 默认的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)。你可以对参数name 和numtimes 尝试不同的值。 ASP.NET MVC model binding system 会自动根据地址栏中URL里的 querystring参数来映射到适合方法中去。

在这两个例子中,控制器一直在做着MVC中“VC”部分的功能。 也就是视图和控制器的工作。该控制器直接返回HTML内容。一般情况下,您不会让控制器直接返回HTML,因为这样代码会变得非常的繁琐。相反,我们通常会使用单一的视图模板文件来帮助生成返回的HTML。下面让我们继续了解这是能做到的吧。

posted @ 2012-12-06 14:01  花儿笑弯了腰  阅读(283)  评论(0编辑  收藏  举报