首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用相同的参数和方法名,控制器如何在ASP.NET核心MVC中找到要调用的方法?

在ASP.NET核心MVC中,控制器通过路由和参数来确定要调用的方法。路由指定了处理请求的控制器和动作方法的规则。在ASP.NET核心MVC中,可以通过以下两种方法来定义路由:

  1. 属性路由:在控制器或动作方法上使用特性来指定路由规则。可以使用[Route]特性在控制器或动作方法上指定路由模板,例如:
代码语言:txt
复制
[Route("api/[controller]")]
public class MyController : Controller
{
    [HttpGet("{id}")]
    public IActionResult Get(int id)
    {
        // 执行对应的动作方法
        return Ok();
    }
}

在上述示例中,控制器类上的[Route("api/[controller]")]特性指定了控制器的路由模板。[HttpGet("{id}")]特性指定了Get动作方法的路由模板。

  1. 带有路由模板的约定路由:使用路由约定来定义默认的路由规则。可以在应用程序的Startup.cs文件的ConfigureServices方法中配置路由约定,例如:
代码语言:txt
复制
services.AddMvc(options =>
{
    options.Conventions.Add(new RouteTokenTransformerConvention(new SlugifyParameterTransformer()));
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

在上述示例中,通过AddMvc方法的options参数配置了一个路由约定。该路由约定使用SlugifyParameterTransformer来转换路由参数的格式。

无论是属性路由还是约定路由,当收到请求时,ASP.NET核心MVC会根据路由模板匹配请求的URL,并确定要调用的控制器和动作方法。匹配的过程依赖于请求的HTTP方法和URL参数。如果找到匹配的控制器和动作方法,则会调用该方法并返回结果。

至于参数名的匹配,在ASP.NET核心MVC中,会使用参数名称和URL中的路由参数进行匹配。例如,如果URL中包含id参数,则会将其传递给控制器动作方法中的id参数。

总结起来,在ASP.NET核心MVC中,控制器通过路由和参数名来找到要调用的方法。路由定义了请求的URL和对应的控制器和动作方法,而参数名匹配则是根据请求的URL中的路由参数进行的。这样就可以确保使用相同的参数和方法名时,控制器能够正确地找到要调用的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法。 查询Details和Delete方法 打开Movie控制器并查看Details方法。...scaffolding引擎增加了一个注释表明,在调用的HTTP请求方法中,GET请求有三个URL段,Movies控制器,Details方法和ID值。...,需要方法具有独特唯一的签名 (方法名称相同但不同的参数列表)。...但是,在这里您需要两种删除方法 — — 一个 GET方法和一个POST方法它们都具有相同的签名。(他们都需要接受一个整数作为参数)。 要解决这一点,可以有几种办法。一是使用不同的方法名称。...另一个常见的方法,来避免具有相同名称和签名的方法,是人为地改变POST 方法,包括未使用参数的签名。

3.1K60
  • Asp.Net MVC4入门指南(9):查询详细信息和删除记录

    在本教程中,您将查看自动生成的Details和Delete方法。 查询详细信息和删除记录 打开Movie控制器并查看Details方法。...,需要方法具有独特唯一的签名 (方法名称相同但不同的参数列表)。...但是,在这里您需要两种删除方法 — — 一个 GET方法和一个POST方法它们都具有相同的签名。(他们都需要接受一个整数作为参数)。 要解决这一点,可以有几种办法。一是使用不同的方法名称。...另一个常见的方法,来避免具有相同名称和签名的方法,是人为地改变POST 方法,包括未使用参数的签名。...以上的查询详细信息和删除记录示例是为了帮助大家更好的掌握MVC的知识,在进行MVC开发时,使用开发工具也可以大大提高工作效率。

    2K80

    ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    (2)每个Controller都对应View中的一个文件夹,文件夹的名称跟Controller名相同   (3)Controller中的方法名都对应一个View视图(非必须,但是建议这么做)而且View...的名字跟Action的名字相同   (4)控制器必须是非静态类,并且要实现IController接口   (5)Controller类型可以放到其他项目中 4.3 视图的相关约定 ?   ...(3)控制器的Action方法执行完成后,返回ViewResult,然后MVC框架在执行ExcuteResult方法时,Controller中的ViewData数据会传递给ViewPage类,其实就是把...中查询数据时需要转换合适的类型 在ViewPage中查询数据时不需要类型转换 有一些类型转换代码 可读性更好   (6)如何在程序中使用ViewData与ViewBag   ①在Controller中的代码...所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC的路由规则默认又是什么,在哪里设置的呢?

    2K30

    ASP.NET MVC5高级编程——(1)了解MVC模式和第一个MVC程序、认识控制器

    MVC 编程模式 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表)...全局应用程序控制文件 3、MVC中的约定: 视图访问和寻址规则 1)、在控制器中使用View()方法调用视图,返回和“动作方法同名”的视图 2)、寻址规则:View()方法默认从“View文件夹”下寻找和控制器同名的文件夹...Ctrl+F5,就是不调试的启动: 然后可以自己添加方法: 修改Details方法,使其读取和显示一个名为ID的参数,在Asp.Net MVC 5的默认路由约定中:将操作方法名称后面的URL的这个片段作为一个参数...,该参数的名称为ID,如果操作方法中有名为ID的参数,那么Asp.Net MVC 会自动将这个URL片段作为参数传进来,就是ID的值!...3 ,在MVC中,控制器才是核心,每一个请求都必须通过控制器处理,而且有些请求不需要模型和视图! 控制器就是MVC应用程序中的“指挥员”,它紧密的编排用户、模型对象和视图的交互。

    1.9K20

    如何使用Serilog.AspNetCore记录ASP.NET Core3.0的MVC属性

    记录来自MVC的其他信息 就目前而言,ASP.NET Core中的一个特征是许多行为被MVC“基础结构”锁定在了MVC框架内部来实现。端点路由是采用MVC功能并将其下移到核心框架中的首要工作之一。...我还将展示如何在page过滤器中添加RazorPages特定的值(如HandlerName)。 使用自定义过滤器记录MVC属性 过滤器相当于为每个请求运行的类似于MVC的微型中间件管道。....Action过滤器在执行MVC操作方法之前和之后运行。他们可以访问许多MVC属性的值,例如正在执行的Action及其将被调用的参数。 下面的Action过滤器直接实现IActionFilter。...有了这个配置之后,如果你调用一个MVC控制器,你在Serilog的请求日志消息中会看到额外的数据(ActionName,ActionId,和RouteData,ValidationState)记录: ?...如果要记录其他集中MVC过滤器中的值,则可以以相同的方式实现其他过滤器,例如资源过滤器,结果过滤器或授权过滤器。

    3.6K10

    ASP.NET Core依赖注入深入讨论

    依赖注入是ASP.NET Core的核心,它能让您应用程序中的组件增强可测试性,还使您的组件只依赖于能够提供所需服务的某些组件。...ASP.NET Core提供了很多扩展方法,使注册各种生命周期的服务和其他设置更加方便。...作为Invoke方法的参数注入的组件是中间件绝对必需的,如果它找不到要注入的IDataService,它将引发InvalidOperationException异常。...每种方法的用例: 构造函数:所有请求都需要的单例(Singleton)组件 Invoke参数:在请求中总是必须的作用域(Scoped)和瞬时(Transient)组件 RequestServices:基于运行时信息可能需要或可能不需要的组件...如果您想访问控制器/视图/视图组件之外的HttpContext,那怎么办?例如,要访问当前登录用户的声明?

    2.2K10

    ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    M:Model 主要是存储或者是处理数据的组件;Model其实是实现业务逻辑层对实体类相应数据库操作,如:CRUD。它包括数据、验证规则、数据访问和业务逻辑等应用程序信息。...名相同   (3)Controller中的方法名都对应一个View视图(非必须,但是建议这么做)而且 View的名字跟Action的名字相同   (4)控制器必须是非静态类,并且要实现...(2)ViewPage下也有一个ViewData的一个属性   (3)控制器的Action方法执行完成后,返回ViewResult,然后MVC框架在执行ExcuteResult方法时,Controller...中查询数据时需要转换合适的类型 在ViewPage中查询数据时不需要类型转换 有一些类型转换代码 可读性更好   (6)如何在程序中使用ViewData与ViewBag   ①在Controller中的代码...所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC的路由规则默认又是什么,在哪里设置的呢?

    91020

    【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--目录(88 完结)

    为什么要做这个 在使用nodejs开发过程中,总是发现需要做很多重复性的体力劳动,且因为自身是服务端程序员出身,感觉有一些服务端好的东西其实可以在nodejs上得到应用并能提高一些开发工作效率。...如自动路由,路由映射,参数映射等等功能; 代码基本上都是用typescript写的,因为他有比较好的语法检查,以及最重要的智能提示!!!实在是烦透了方法名、类名要么自己手动敲,要么各种copy。...mvc)一样处理请求--控制器的声明定义和发现篇(【controller+action】 【nodejs】 让nodejs像后端mvc框架(asp.net mvc)一样处理请求--控制器和处理函数的注册篇...】 【nodejs】 让nodejs像后端mvc框架(asp.net mvc)一样处理请求--参数自动映射篇 【nodejs】 让nodejs像后端mvc框架(asp.net mvc)一样处理请求--处理结果适配篇...已完成的功能 可以根据默认url路由规则自动调用请求处理函数 请求参数可以使用声明实体类+装饰器的方式完成参数的自动绑定 处理结果可以根据需求自动适配(nodejs服务端渲染、ajax调用返回json、

    1.1K20

    Asp.Net Web API 2第五课——Web API路由

    如果你熟悉Asp.Net MVC,Web API的路由与Asp.Net MVC的路由是非常类似的。这主要的区别就是Web API使用的是HTTP方法,而不是URI路径来选择Action。...你也可以在Web API中使用MVC风格的路由。本文不需要有任何Asp.Net MVC的基础。.../1 在路由中使用“api”的原因是为了避免与ASP.NET MVC的路由冲突。...例如,对于一个Get请求,Web API会查找一个以“Get…”开头的动作,如“GetContact”或“GetAllContacts”等。这种约定只应用于GET、POST、PUT和DELETE方法。...注意,URI中的{id}片段如果出现,会被映射成Action的id参数。在这个例子中,这个控制器定义了两个GET方法,一个带有id参数的和一个不带有id参数的。

    1.2K50

    .NET MVC简单介绍

    比如ASP.Net MVC的核心类仍然是实现了IHttpHandler接口的MVCHandler。 ASP.net WebForm、和ASP.net MVC的关系?...模型(Model)、视图(View)、控制器(Controller) ASP.net MVC与“三层架构” ASP.net MVC与“三层架构”没有任何的关系。...的Index方法一致):添加→视图 新建一个用来收集用户参数的类:IndexReqModel(类名无所谓)包含Num1、Num2两个属性(只要不重名,大小写都可以)。...num1=1&num2=5”的时候,会找到Controllers下的TestController的Index方法去执行,把请求参数按照名字填充到Index方法的参数对象中(MVC引擎负责创建对象,给数据复制...,并且进行类型的转换),reutrn View(resp)就会找到Views下的和自己的“类名、方法名”相对应的Index.cshtml,然后把数据resp给到Index.cshtml去显示。

    1.2K10

    七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL

    ASP.Net MVC 数据处理 七天学会ASP.NET MVC (四)——用户授权认证问题 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 七天学会ASP.NET MVC...异常过滤器与其他过滤器的用法相同,可当作属性使用。使用异常过滤器的基本步骤: 1. 使它们可用 2. 将过滤器作为属性,应用到action 方法或控制器中。我们也可以在全局层次使用异常过滤器。...已定义的路径会在请求周期中确定执行的是正确的控制器和action 方法。如果使用 route.MapRoute创建了多个路径,那么内部路径的定义就意味着创建Route对象。...调用Action 方法 每个控制器都有与之关联的 ControllerActionInvoker对象。在执行方法中ControllerActionInvoker对象调用正确的action 方法。...可能会设置Route参数的默认值,而Query String不可能有默认值。 Query 字符串可使URL 混乱,而Route参数可保持它有条理。 如何在Route 参数中使用限制?

    3.9K100

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

    拒绝重复 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(DRY --Don’t Repeat Yourself)"。...您在前面教程所创建的控制器和视图会自动启用,使用验证指明的Movie model类的属性。使用Edit行为方法,同样的验证方法也完全适用。直到没有任何客户端验证错误的表单数据,才会被发送回服务器。...此Helper旁边是对Html.ValidationMessageFor方法的调用。这两个Helper方法将处理由控制器传递到视图的模型对象(在这里是,Movie对象)。...有了本节介绍的内容,相信大家已经掌握了给数据模型添加校验器的方法。后面大家在进行MVC开发时,一方面可以运用本节知识,一方面也可以借助一些开发工具。...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8.

    9.1K70

    net MVC 3.0 1

    ASP.net web from 与 asp.net MVC 相比: webfrom 在当年出来的时候非常流行,对于开发也是个非常好的主意,开发起来速度特别快。...下来我们看下,MVC的开发思路: 首先 MVC 的意思就是 Model View Controller 模型-视图-控制器 1.首先我们在新建一个空的asp.net mvc 3.0 项目,之后我们可以很明了的看到这个...我们就有了我们 Controller的一个核心方法,当浏览器访问的时候,主要是借助于这个 Index 方法和漏油事件来完成页面的跳转, 在关于漏油事件我们以后的文章里会提到。...我们把鼠标放在方法名字上,点击右键既可以出现添加视图页面。 添加的时候,我们应该添加的页面与action的名字相同。...在漏油处理的时候,我们这里根据我们的URL链接地址栏,new 即为默认环境下,我们去找 Home这个控制器,然后去找 ListJquery这个方法,ID为可以选值,这样我们在项目启动的时候,我们就进入了

    46430

    .Net MVC 框架基础知识「建议收藏」

    通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。 一-1、认识MVC框架的结构 Model(模型)表示应用程序核心(比如数据库记录列表)。 View(视图)显示数据(数据库记录)。...在ASP.NET MVC中通过在Action(行为或操作)方法中返回ActionResult类型的对象来实现向客户端响应上面的各种结果。...映射的前提条件:Html标记的name属性值和action中参数的名称要一致....小结:MVC三大组件的相互关系 在控制器中可以直接调用视图和模型 在视图中可以调用模型。...模型不能调用视图。 模型能够限定视图中使用的数据,但视图中使用的模型应由控制器提供。 在视图中可以调用控制器(通过视图中表单的提交和点击超链接的方式调用)。

    2.2K50

    ASP.NET MVC5高级编程 ——(5)路由

    构造传出的URL,用来响应控制器操作。 ASP.NET MVC5中有:特性路由和传统路由。 ASP.NET MVC5中的路由机制图解: ?...使用控制器类的一个特性代替每个方法上的所有路由特性。在控制器类上定义路由时,可以使用一个叫做action的特殊路由参数,它可以作为任意操作名称的占位符。...URL= /Home 调用Index()方法,并使用 NULL 作为Id参数的值。 URL= /Home/Index/3 调用Index()方法,id=3。 ?...: 并不是MVC应用程序的所有请求都针对控制器和动作,MVC路由提供对内容进行服务。...ActionLink(“链接文本”,”目标动作方法名”) 至于和哪个控制器进行绑定,取决于视图是通过哪个控制器的请求进行的渲染 可以用一个匿名类型为片段变量传递值 Eg:@Html.

    2.1K40
    领券