.Net MVC5 Controller

1. 创建Controller






添加完成之后,一个控制器文件HelloWorldController.cs和一个新的文件夹Views\HelloWorld被添加到工程中。
同时该控制器代码在编辑区域被打开。



2. 返回字符串的Controller
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(string name, int numTimes = 1) {
     	   return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
	}
} }

关注重点:

1.创建的controller类必须实现controller接口(在新建是自动加上了的)。

2.可以直接使用url请求该controller。例如使用:http://localhost:1234/HelloWorld/就可以直接请求HelloWorld这个控制器下的index方法(默认是index)


3. 路由匹配规则可以在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 }
    );
}
此处的路由规则就是controller/action(即方法)/id,默认值分别未“home”,“index”。也就是说当url为: localhost:1234/ 时请求的是“Home”。

4. 请求参数(query strings)接收,以welcome方法为例。访问urllocalhost:1234/HelloWorld/Welcome?name=Scott&numtimes=4/可以得到如下结果:


5.路由数据接收,此时将welcome方法修改为:

public string Welcome(string name, int ID = 1)
{
    return HttpUtility.HtmlEncode("Hello " + name + ", ID: " + ID);
}

访问urllocalhost:1234/HelloWorld/Welcome/3?name=Scott/可以得到如下结果:



因为根据路由规则url中第三个为路由数据ID,所以ID即接收为3。ASP .Net MVC中建议使用路由数据传递参数,而不是使用query string。所以为了达到使用路由数据传递参数的目的,我们可以添加自定义的路由规则:

//自定义路由规则
routes.MapRoute(
<span style="white-space:pre">	</span>name: "Colin",
<span style="white-space:pre">	</span>url: "{controller}/{action}/{name}/{id}"
);

此处的name只是方便我们区分是哪个路由。路由规则根据格式和参数自行匹配。例如,一个新的url请求,其中包含了两个路由数据:localhost:49734/HelloWorld/RouteDataTest/Scott/3/根据路由规则,name=Scott同时id=3,所以得到如下结果:


路由规则的匹配先后顺序:controller > action > 路由数据的参数名。路由数据的值被自动赋值到具有相同名称的方法参数上。


6. 目前为止涉及到的controller action的返回类型都是string型的,相当于直接输出简单的html到浏览器。然而,正常情况应该是提供数据给View端,view端情况之后继续~







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值