首页 > 编程语言 >无涯教程-ASP.NET MVC - 控制器

无涯教程-ASP.NET MVC - 控制器

时间:2023-10-12 12:32:11浏览次数:33  
标签:Web ASP name 无涯 System MVC Employee using

控制器本质上是ASP.NET MVC应用程序的中央单元,控制器决定将选择哪个模型,然后在呈现该视图之后,从模型中获取数据并将其传递给相应的视图。

控制器是从System.Web.Mvc.Controller继承的C#类,System.Web.Mvc.Controller是内置的控制器基类,控制器中的每个公共方法都称为操作方法,这意味着您可以通过一些URL从Web调用它来执行操作。

MVC约定是将控制器放在设置项目时Visual Studio创建的Controllers文件夹中。

通过创建一个新的ASP.Net MVC项目,让我们看一个Controller的简单示例。

步骤1 - 打开Visual Studio,然后单击File→New→Item菜单选项。

将打开一个"New Project"对话框。

Visual Studio Project Menu

步骤2 - 在左侧窗格中,选择Template→Visual C#→Web。

步骤3 - 在中间窗格中,选择ASP.NET Web应用程序。

步骤4 - 在"Name"字段中输入项目名称" MVCControllerDemo",然后单击"OK"继续。您将看到以下对话框,要求您设置ASP.NET项目的初始内容。

MVCControllerDemo

步骤5 - 为了简化操作,请选择"Empty"选项,然后在"Add folders and core references"部分中选中" MVC"复选框,然后单击"OK"。

它将创建具有最少预定义内容的基本MVC项目。

通过Visual Studio创建项目后,您将在"Soluition Explorer"窗口中看到许多文件和文件夹。

由于我们已经从一个空项目模板创建了ASP.Net MVC项目,因此目前,该应用程序不包含任何要运行的内容。

步骤6 - 右键单击Solution Explorer中的Controllers文件夹,添加EmployeeController。选择Add→Controller。

EmployeeController

它将显示"Add Scaffold"对话框。

EmployeeController Scaffolding Dialog

步骤7 - 选择" MVC 5 Controller-Empty"选项,然后单击"Add"按钮。

出现"Add Controller"对话框。

MVC 5 Controller

步骤8 - 将名称设置为EmployeeController,然后单击"Add"按钮。

您将在Controllers文件夹中看到一个新的C#文件EmployeeController.cs,该文件夹也可以在Visual Studio中进行编辑。

Custom Route Employee Controller

现在,在此应用程序中,我们将使用默认Route为Employee控制器添加自定义路由。

步骤1 -转到" App_Start"文件夹下的" RouteConfig.cs"文件,并添加以下路由。

routes.MapRoute(
   "Employee", "Employee/{name}", new{
      controller = "Employee", action = "Search", name =
      UrlParameter.Optional });

以下是RouteConfig.cs文件的完整实现。

using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MVCControllerDemo {
   public class RouteConfig {
      public static void RegisterRoutes(RouteCollection routes){
         routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
			
         routes.MapRoute(
            "Employee", "Employee/{name}", new{
               controller = "Employee", action = "Search", name = UrlParameter.Optional });
					
         routes.MapRoute(
            name: "Default", url: "{controller}/{action}/{id}", defaults: new{
               controller = "Home", action = "Index", id = UrlParameter.Optional });
      }
   }
}

考虑一种场景,其中任何用户来指定URL" Employee/Mark"来搜索雇员,在这种情况下,Mark将被视为参数名称,与Action方法不同。因此,在这种情况下,我们的默认路由将无法正常工作。

为了在传递参数时从浏览器获取输入值,MVC框架提供了一种解决此问题的简单方法。通过使用Action方法内的参数。

步骤2 -  使用以下代码更改EmployeeController类。

using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCControllerDemo.Controllers  {
   public class EmployeeController : Controller {
      //GET: Employee
      public ActionResult Search(string name){
         var input = Server.HtmlEncode(name);
         return Content(input);
      }
   }
}

如果将参数添加到操作方法,则MVC框架将查找与参数名称匹配的值,它将应用所有可能的组合来找出参数值,它将搜索路由数据,查询字符串等。

因此,如果您请求"/Employee/Mark",那么MVC框架将决定我需要一个带有" UserInput"的参数,然后Mark将被从URL中选取并自动传递。

Server.HtmlEncode只会将任何类型的恶意脚本转换为纯文本格式,当上面的代码被编译并执行并请求以下URL http://localhost:61465/Employee/Mark 时,您将获得以下输出。

Localhost Employee Mark

如您在上面的屏幕截图中所见,从URL中选择了Mark。

参考链接

https://www.learnfk.com/asp.net_mvc/asp.net-mvc-controllers.html

标签:Web,ASP,name,无涯,System,MVC,Employee,using
From: https://blog.51cto.com/u_14033984/7825931

相关文章

  • Spring MVC 与 Spring Webflux 性能测试,谁更强?
    如果你已经使用Spring一段时间或者是编程初学者,你一定听说过使用响应式编程比传统的线程池风格更好。自Spring诞生以来,开发者创建Java企业应用程序就变得更加容易。它提供了在企业环境中使用Java语言所需的一切,支持Groovy和Kotlin作为JVM上的替代语言,并且可以根据......
  • 无涯教程-ASP.NET MVC - 简介
    ASP.NETCoreMVC是ASP.NETCore内,提供给Web应用程序开发的框架,它可视为ASP.NETMVC的后继版本,其主要功能均衍生自ASP.NETMVC,但它除了基于ASP.NETCore外,也将ASP.NETMVC与类似平台进行了整合,例如负责View的ASP.NETWebPages以及负责RESTfulAPI的ASP.NETW......
  • 无涯教程-ASP.NET Core - Razor表单
    在本章中,无涯教程将继续讨论标签助手,还将在应用程序中添加新功能,并使其能够编辑现有员工的详细信息,将在每个员工添加一个链接,该链接将转到HomeController上的Edit动作。@modelHomePageViewModel@{ViewBag.Title="Home";}<h1>Welcome!</h1><table>@forea......
  • spring-mvc 请求流程学习
    参考:01、基础入门-SpringBoot2课程介绍_哔哩哔哩_bilibili请求进入HttpServlet的doGet方法然后通过实现类org.springframework.web.servlet.FrameworkServlet#doGet()调用org.springframework.web.servlet.FrameworkServlet#processRequest----》org.springframework.web.ser......
  • 无涯教程-ASP.NET Core - Razor导入
    在本章中,无涯教程将讨论RazorViewImport,除了ViewStart文件之外,还有一个ViewImports文件,MVC框架在呈现任何视图时都将查找该文件。就像ViewStart文件一样,可以将ViewImports.cshtml放到文件夹中,并且ViewImports文件可以影响文件夹层次结构中的所有视图。此视图是此版本MVC的......
  • 无涯教程-ASP.NET Core - Razor视图
    在本章中,无涯教程将讨论RazorViewStart。MVC中的Razor视图引擎有一个约定,即它将查找名称为_ViewStart.cshtml的任何文件,并在该文件中执行代码。ViewStart文件中的代码无法呈现到页面的HTML输出中,但可用于从各个视图内的代码块中删除重复的代码。在示例中,如果希望每个视图......
  • 无涯教程-ASP.NET Core - Razor布局
    在本章中,无涯教程将了解“RazorLayout”视图,大多数网站和Web应用程序都希望创建呈现一些常见元素的页面。布局视图现在了解什么是布局视图。"Layout"视图是扩展名为*.cshtml的Razor视图,您可以选择以所需的方式命名布局视图,在本章中,将使用名为_Layout.cshtml。这是"Layou......
  • 无涯教程-ASP.NET Core - 实体框架
    在本章中,无涯教程将设置和配置应用程序以保存和读取SQLServer数据库中的数据。要使用数据库,将使用实体框架,该框架经过了重新编写以与新的.NETFramework一起使用。在此应用程序中,将使用SQLServerLocalDB。LocalDB是为开发人员优化的SQLServer的特殊版本。VisualStudio......
  • springMVC @Test方法中如何请求https
    原文链接:https://www.longkui.site/error/springmvc-test-https/4823/0.背景springMVC环境,需要在@Test方法中发送一个https请求,按照格式要求发送了,结果报错org.springframework.web.client.ResourceAccessException:I/OerroronPOSTrequestfor"https://xxxx/xxx/xx:jav......
  • 无涯教程-ASP.NET Core - 属性路由
    在本章中,无涯教程将学习另一种路由方法,即基于属性的路由,通过基于属性的路由,可以在控制器类和这些类内部的方法上使用C#属性,这些属性具有告诉ASP.NETCore何时调用特定控制器的元数据。它是基于约定的路由的替代方法。按照出现的顺序,注册的顺序对路由进行判断,但是映射多个路由是......