Asp.net MVC3.0 入门指南 2.控制器Controller
添加一个控制器
MVC代表model-view-controller。MVC对开发应用程序来说,
是一种很好的架构和便于维护的模式。基于MVC的程序包含:
- 控制器:负责处理外部请求,获取模型数据,提取视图模板(负责返回请求给客户端)
- 模型:代表应用程序的数据并使用验证逻辑去执行数据的业务规则
- 视图:用来动态生成HTML响应的一些模板文件
在这个教程里将会包含所有上述概念并告诉您如何去使用他们去创建应用程序。
让我们开始创建一个控制类。在解决方案资源管理器中,右键Controller文件夹并选择添加Controller。
命名新的控制器为“HelloWorldController”。保留默认的模板为 Empty controller 。单击Add。
注意:在解决方案资源管理器中一个新的文件已经被创建,名字为HelloWorldController.cs.
文件已经在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,它做到了!
URL的第一部分决定了执行哪个控制器类。所以 /HelloWorld 映射到 HelloWorldController 类。
URL的第二部分决定了执行控制器类中的哪个操作(方法)。所以/HelloWorld/Index 触发了
HelloWorldController 类的Index方法。
注意:Index方法被用作默认方法。
这就是为什么如果没有明确指定方法时,Index方法将会被调用的原因。
浏览ttp://localhost:xxxx/HelloWorld/Welcome. Welcome方法返回
字符串"This is the Welcome action method...".
MVC默认映射为/[Controller]/[ActionName]/[Parameters]
.
对于这个URL来说,控制器是HelloWorld,Welcome是响应方法。
您不用必须使用[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多试几次其他的值。系统自动从URL请求字符串中映射到您的方法中
相应的参数上。
在这两个例子中控制器已经完成了MVC中的“VC”,也即是说,视图和控制器已经
工作了。控制器直接返回了HTML.通常您不想让控制器直接返回HTML,因为这会变成
非常累赘的代码。我们通常使用一个单独的视图模板文件来帮助生成HTML响应。
让我们来看看我们如何能够做到这一点。
下一节:视图 View
补充:Web开发 , ASP.Net ,