• 1.将控制器添加到 ASP.NET Core MVC 应用


    模型-视图-控制器 (MVC)


    体系结构模式将应用分成 3 个主要组件:模型 (M)、视图 (V) 和控制器 (C)。

    模型(M):表示应用数据的类。 模型类使用验证逻辑来对该数据强制实施业务规则。 通常,模型对象检索模型状态并将其存储在数据库中。
    本教程中,Movie 模型将从数据库中检索电影数据,并将其提供给视图或对其进行更新。 更新后的数据将写入到数据库。

    视图(V):视图是显示应用用户界面 (UI) 的组件。 此 UI 通常会显示模型数据。

    控制器(C):处理浏览器请求的类。 它们检索模型数据并调用返回响应的视图模板。 在 MVC 应用中,视图仅显示信息;
    控制器处理并响应用户输入和交互。 例如,控制器处理路由数据和查询字符串值,并将这些值传递给模型。 该模型可使用这些值查询数据库。
    例如,https://localhost:1234/Home/About 具有 Home(控制器)的路由数据和 About(在 Home 控制器上调用的操作方法)。
    https://localhost:1234/Movies/Edit/5 是一个请求,用于通过电影控制器编辑 ID 为 5 的电影。 本教程的后续部分中将介绍路由数据。


    添加控制器


    在“解决方案资源管理器”中,右键单击“控制器”,然后单击“添加”>“控制器”
    在“添加基架”对话框中,选择“MVC 控制器 - 空”
    在“添加空 MVC 控制器”对话框中,输入 HelloWorldController 并选择“ADD”。

    将“Controllers/HelloWorldController.cs”的内容替换为以下内容:

    using Microsoft.AspNetCore.Mvc;
    using System.Text.Encodings.Web;

    namespace MvcMovie.Controllers
    {
    public class HelloWorldController : Controller
    {
    // 指出这是一个 HTTP GET 方法,它通过向基 URL 追加 /HelloWorld/ 进行调用。
    // GET: /HelloWorld/

    public string Index()
    {
    return "This is my default action...";
    }

    // 指定一个 HTTP GET 方法,它通过向 URL 追加 /HelloWorld/Welcome/ 进行调用。
    // GET: /HelloWorld/Welcome/

    public string Welcome()
    {
    return "This is the Welcome action method...";
    }
    }
    }


    在非调试模式下运行应用,并将“HelloWorld”追加到地址栏中的路径。 Index 方法返回一个字符串。


    MVC 根据入站 URL 调用控制器类(及其中的操作方法)。 MVC 所用的默认 URL 路由逻辑使用如下格式来确定调用的代码:
    /[Controller]/[ActionName]/[Parameters]

    在 Startup.cs 文件的 Configure 方法中设置路由格式。

    app.UseMvc(routes =>
    {
    routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}");//如果浏览到应用且不提供任何 URL 段,它将默认为上面突出显示的模板行中指定的“Home”控制器和“Index”方法。

    });

    第一个 URL 段决定要运行的控制器类。 因此 localhost:xxxx/HelloWorld 映射到 HelloWorldController 类。
    该 URL 段的第二部分决定类上的操作方法。 因此 localhost:xxxx/HelloWorld/Index 将触发 HelloWorldController 类的 Index 运行。
    请注意,只需浏览到 localhost:xxxx/HelloWorld,而 Index 方法默认调用。 原因是 Index 是默认方法,如果未显式指定方法名称,
    则将在控制器上调用它。 URL 段的第三部分 (id) 针对的是路由数据。
    浏览到 https://localhost:xxxx/HelloWorld/Welcome。 Welcome 方法将运行并返回字符串 This is the Welcome action method...。
    对于此 URL,采用 HelloWorld 控制器和 Welcome 操作方法。 目前尚未使用 URL 的 [Parameters] 部分。


    修改代码,将一些参数信息从 URL 传递到控制器。 例如 /HelloWorld/Welcome?name=Rick&numtimes=4。 更改 Welcome 方法以包括以下代码中显示的两个参数:


    // GET: /HelloWorld/Welcome/
    // Requires using System.Text.Encodings.Web;
    public string Welcome(string name, int numTimes = 1)
    {
    return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
    }
    前面的代码:
    使用 C# 可选参数功能指示,未为 numTimes 参数传递值时该参数默认为 1。
    使用 HtmlEncoder.Default.Encode 防止恶意输入(即 JavaScript)损害应用。
    在 $"Hello {name}, NumTimes is: {numTimes}" 中使用内插字符串。

    运行应用并浏览到:
    https://localhost:xxxx/HelloWorld/Welcome?name=Rick&numtimes=4

  • 相关阅读:
    python进程同步,condition例子
    python管道pipe,两个进程,使用管道的两端分别执行写文件动作,带锁(lock)
    无论怎样,拒绝了
    这两天发现又到了写无可写的地步
    用Perl编写Apache模块
    技术开发团队的项目管理工具
    *nix下传统编程入门之GCC
    当kfreebsd 用户遇见openSUSE系统
    kFreeBsd 国内开源镜像站汇总
    [转]编程语言与宗教
  • 原文地址:https://www.cnblogs.com/ouyangkai/p/10916558.html
Copyright © 2020-2023  润新知