【MVC5】2.添加控制器

MVC是模型-视图-控制器。MVC是开发,架构良好的应用模式,可测性和易于维护。

基于MVC模式的应用程序包含:

模型:类来表示应用程序的数据,并使用验证逻辑来执行该数据的业务规则。
观点:模板文件,你的应用程序使用动态生成HTML响应。

控制器:类来处理传入的浏览器请求,检索模型数据,然后指定返回对浏览器的响应的视图模板。


我们将在本教程系列中覆盖所有这些概念,并向您展示如何使用它们来构建应用程序。


让我们开始创建一个控制器类。在“解决方案资源管理器”中,右键单击“控制器”文件夹,然后单击“添加”,然后单击“控制器”按钮。




在“添加材料”对话框中,单击“MVC 5控制器-空,然后单击“添加”。




命名您的新控制器“HelloWorldController”并单击“添加”。




注意在解决方案资源管理器中,一个新的文件已经创建命名helloworldcontroller.cs和一个新的文件夹视图\ HelloWorld。该控制器是在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和第一个方法叫指数。让我们从浏览器中调用它。运行应用程序(按F5或Ctrl + F5)。在浏览器中,将“在地址栏的路径HelloWorld”。(例如,在下面的插图,它的HTTP:/ /本地:1234 / HelloWorld。)在浏览器页面会看起来像下面的截图。在上面的方法中,代码直接返回了一个字符串。你告诉系统返回一些HTML,它做到了!




ASP.NET MVC调用不同的控制器类(和不同的动作方法在其中)根据输入的URL。默认URL路由逻辑ASP.NET MVC使用使用这样的格式来确定什么样的代码来调用:

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

你在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 }
    );
}


当您运行应用程序,不提供任何的网址段,它默认为“家庭”控制器和“索引”的行动方法中指定的默认段的代码。
该地址的第一部分确定要执行的控制器类。所以/ HelloWorld地图HelloWorldController类。地址的第二部分决定要执行的类的操作方法。因此/HelloWorld/Index HelloWorldController类指数的方法来执行。注意,我们只需要浏览/ HelloWorld和索引方法默认使用。这是因为一个名为索引的方法是将在控制器上调用的默认方法,如果一个没有显式指定。的第三个部分的网址段(参数)是路由数据。在本教程中,我们将看到路由数据。
浏览http:/ /本地:XXXX / HelloWorld /欢迎。欢迎的方法运行并返回字符串“这是欢迎的动作方法……”。默认MVC映射/ [控制]、[ ]、[参数] ActionName。这个URL,该控制器是HelloWorld和欢迎的动作方法。你还没有使用[参数]的一部分的网址。




让我们修改的例子略,可以传递一些参数信息的URL的控制器(例如,/HelloWorld/Welcome?name=Scott&numtimes=4)。更改您的欢迎的方法,包括两个参数如下所示。请注意,代码采用C #可选参数特征表明numtimes参数应默认为1如果没有值传递参数。


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


安全注意:上面的代码使用httpserverutility.htmlencode保护应用免受恶意输入(即JavaScript)。更多信息参见如何:通过对字符串应用HTML编码在Web应用程序中防止脚本侵入。


运行应用程序,浏览到的URL例子(http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4)。你可以尝试不同的值的名称和numtimes在URL。ASP.NET的MVC模型绑定系统自动地图的命名参数从地址栏中的查询字符串,你的方法参数。




在以上示例中,URL片段(参数)是不使用的name和numtimes参数作为查询字符串传递的吗?(问号)在上面的网址是一个分隔符,查询字符串跟随。字符分隔查询字符串。
用下面的代码替换欢迎的方法:


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

运行应用程序并输入以下网址:

http://localhost:xxx/HelloWorld/Welcome/3?name=Rick





这一次的第三段匹配URL路线的参数id。欢迎动作方法包含一个参数(ID),匹配的URL规范在RegisterRoutes方法。


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 }
    );
}

在ASP.NET的MVC应用程序,通过参数的路由数据更典型的(像我们一样的ID以上)比作为查询字符串传递给。你也可以添加一个路由通过的姓名和numtimes参数在URL路由数据。在App_Start\RouteConfig.cs文件,添加“你好”路线:


public class RouteConfig
{
   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 }
      );

      routes.MapRoute(
           name: "Hello",
           url: "{controller}/{action}/{name}/{id}"
       );
   }
}



运行应用程序并浏览到  /localhost:XXX/HelloWorld/Welcome/Scott/3 .




许多MVC应用程序,默认路由工作正常。在本教程中,您将学习到通过使用模型绑定器的数据,而您不必修改默认路由。
在这些例子中,控制器已做“VC”部分MVC就是工作的视图和控制器。该控制器直接返回HTML。通常你不需要控制器直接返回HTML,因为这样代码会变得很麻烦。相反,我们通常会使用一个单独的视图模板文件来生成HTML响应。让我们看看下一步我们如何能做到这一点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值