ASP.NET MVC 5 - 控制器

21 篇文章 0 订阅

MVC 代表 模型-视图-控制器MVC 是一种模式用于开发应用程序是很好的架构,可检验性和易于维护。基于 MVC 的应用程序包含︰

  • 竞价︰ 类表示应用程序的数据并使用验证逻辑来执行数据的业务规则。
  • 儒者︰ 您的应用程序使用动态生成 HTML 响应的模板文件。
  • Controllers︰ 类处理传入的浏览器请求,检索模型数据,然后指定将响应返回到浏览器的视图模板。

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

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

 

添加脚手架对话框中,单击MVC 5 控制器-空,,然后单击添加.


 

你新的控制器名称"HelloWorldController",然后单击 添加.

add controller

注意,在 解决方案资源管理器 ,已创建的新文件命名 HelloWorldController.cs Views\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 ,第一种方法叫做 Index让我们从浏览器调用它。运行应用程序 (按 F5 或 Ctrl + F5)。在浏览器中,将"HelloWorld"追加到地址栏中的路径。(例如,在图中,它下面的http://localhost:1234/HelloWorld。)页面在浏览器中的将看起来像下面的屏幕快照。在上述的方法中,代码直接返回一个字符串。你告诉系统刚回国时一些 HTML,并且说到做到 !

ASP.NET MVC 调用不同的控制器类 (和不同的操作方法内他们) 根据传入的 URL。用 ASP.NET MVC 的默认 URL 路由逻辑使用这样的格式来确定哪些代码来调用︰

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

当您运行该应用程序并不提供任何 URL 段时,它将默认为"家"控制器和"指数"的操作方法指定的上面的代码中的默认值。

URL 的第一部分确定要执行的控制器类。所以 /HelloWorld 映射到 HelloWorldController 类。URL 的第二部分确定的行动方法上要执行的类。所以 /HelloWorld/Index 会导致 Index 的方法 HelloWorldController 类来执行。请注意,我们只有以浏览到 /HelloWorld 和 Index 方法在默认情况下。这是因为一种方法称为 Index 是如果不显式指定一个称为控制器的默认方法。URL 段 ( Parameters) 第三部分是为路由数据。在本教程中,我们将稍后看到路由数据。

浏览到 http://localhost:xxxx,HelloWorld,欢迎光临 Welcome 方法运行并返回字符串"这是值得欢迎的行动方法......"。MVC 的默认映射是/[Controller]/[ActionName]/[Parameters]为此 URL,控制器是 HelloWorld 和 Welcome 是操作方法。你还没有使用 [Parameters] 尚未的 URL 的一部分。

让我们稍微修改示例,以便您可以将一些参数信息从 URL 中传递给控制器 (例如, HelloWorld/欢迎? 名称 = 斯科特 & numtimes = 4)。改变你Welcome 方法包括两个参数,如下所示。注意,该代码使用 C# 的可选参数功能表明numTimes 参数应默认为 1,如果没有传递值,该参数。

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

安全说明︰ 上面的代码使用HttpServerUtility.HtmlEncode来保护应用程序的恶意输入 (即 JavaScript)。详细信息请参阅如何︰ 在 Web 应用程序,通过应用 HTML 编码的字符串防止脚本侵入.
运行您的应用程序,然后浏览到示例 URL (http://localhost:xxxx,HelloWorld,欢迎光临? 名称 = 斯科特 & numtimes = 4)你可以尝试不同的值 name 和 numtimes 在 URL 中。ASP.NET MVC 模型绑定系统将自动映射到您的方法中的参数从地址栏中的查询字符串的命名的参数。

在上面的示例中,URL 段 ( Parameters) 而不使用,作为查询字符串传递的参数name numTimes 参数。吗?(问号) 在上面的 URL 是分隔符,接着的查询字符串。& 字符分隔的查询字符串。

欢迎的方法替换为以下代码︰

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

运行应用程序并输入以下 URL: http://localhost:xxx/HelloWorld/欢迎/3? 名称 = Rick

这次第三部分是 URL 匹配路由参数ID.Welcome 的操作方法包含匹配 URL 规范在RegisterRoutes 方法中的参数 (ID)。

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 以上) 比将它们作为查询字符串传递的参数中传递。您也可以添加一条路线,通过这两个name 和 numtimes 作为路由数据的 URL 中的参数。App_Start\RouteConfig.cs文件中,添加"Hello"路由︰

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 应用程序,默认路由工作正常。您将了解在本教程后面来传递数据使用模型联编程序,和你不需要修改默认路由的。

在这些例子中,控制器做 MVC 的"VC"部分 — — 那就是,视图和控制器的工作。控制器直接返回 HTML。通常你不想控制器直接返回 HTML,因为,变得非常繁琐的代码。而我们通常会使用一个单独的视图模板文件来帮助生成 HTML 响应。让我们来看看如何可以做这下。

-----------------------------------------------------------------------------------------

《ASP.NET MVC 5 入门指南》12篇文章汇总如下:

1. ASP.NET MVC 5 - 入门

2. ASP.NET MVC 5 - 控制器

3. ASP.NET MVC 5 - 视图

4. ASP.NET MVC 5 - 添加一个模型

5. ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB

6. ASP.NET MVC 5 - 从控制器访问数据模型

7. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

8. ASP.NET MVC 5 - 将数据从控制器传递给视图

9. ASP.NET MVC 5 - 添加搜索

10. ASP.NET MVC 5 - 给电影表和模型添加新字段

11. ASP.NET MVC 5 - 给数据模型添加校验器

12. ASP.NET MVC 5 - 查询Details和Delete方法

希望这些文章对感兴趣的朋友有所帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值