什么是MVC?MVC就是 Models 模型,Views 视图,Controllers 控制器。MVC虽然分为3个部分,但是和三层没有关系,是一种用来开发应用程序的模式具有良好的架构,易于维护和测试。
- Models:可以理解为是对应用程序的状态、数据以及业务功能的封装。
- Views:用来显示和用户进行交互的HTML页面。(界面的显示和互动)
- Controllers:处理传入的请求,完成相应的UI逻辑调用Model里面的相应业务。
下面让我们添加一个控制器类,在资源管理器 项目里面的Controllers 右击。
接下来去个名字吧,第一个实例一般都喜欢用 helloworld 。
我们把代码改成如下,直接返回string字符串在浏览器窗口。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVC5DEMO.Controllers
{
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "这是HelloWorld默认的一个动作(action)";
}
//GET:/HelloWorld/Welcome/
public string Welcome()
{
return "这是Welcome的 action 方法";
}
}
}
按下F5,在默认的网页地址后面加上Helloworld,如下图:
一回车,就会看到我们刚才写的字符串显示在页面上。
ASP.NET MVC 会根据传入的URL调用不同的控制器类(上面例子的HelloWorld)以及里面不同的方法(上面例子的Index、Welcome)。具体依据什么来判断调用的是哪个控制器,哪个方法在App_Start/RouteConfig.cs 文件里面设定。
如果直接访问域名,会默认调用 defaults里面的 Home控制器下面的Index方法,后面的ID是传入的参数等数据后面会介绍。
所以刚才我们浏览的地址:http://locahost:xxxx/HelloWorld/Welcome MVC默认的映射来解析的话控制器是 HelloWorld ,调用的方法是:Welcome 没有ID这个参数。接下来我们修改为以下代码:
//GET:/HelloWorld/Welcome/
public string Welcome(string name , int age = 18)
{
return HttpUtility.HtmlEncode( "欢迎"+name+",您的年龄是:"+age) ;
}
给Welcome 方法传入2个参数,年龄默认是18 。接下来我们看看运行结果。
以前要获得GET方法传入的参数,需要写一句代码(request),现在MVC自动的帮我们绑定了,多方便!接下来我们把上面的那个代码中的age改成ID,浏览器地址后面添加 /3?name=yan
这次的Welcome后面加上了/3 刚好匹配到了ID,剩下的就匹配到了name这个参数。按照这个思路,是不是有办法让地址栏直接匹配到name,这样url里面就没有 ? 这个符号。
我们在App_start\RouteConfig.cs里面添加一个试试:
当然,默认的路由规则大多数情况下是很合适的,不需要去修改。接下来会介绍模型绑定,这样就不需要修改路由规则了。
下一步学习:添加视图(View)