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

为什么在ASP.NET Core MVC添加的Edit()操作方法(POST)脚手架中ID参数传递了两次?

在ASP.NET Core MVC中,当我们使用脚手架工具添加Edit()操作方法时,ID参数会被传递两次的原因是为了满足RESTful风格的设计理念。

首先,我们需要了解RESTful风格的设计理念。REST(Representational State Transfer)是一种基于HTTP协议的软件架构风格,它强调使用统一的接口进行资源的访问和操作。在RESTful设计中,资源的唯一标识符(通常是资源的ID)被作为URL的一部分传递,而操作(如编辑、删除等)则通过HTTP方法(GET、POST、PUT、DELETE等)来表示。

在ASP.NET Core MVC中,脚手架工具会根据模型类生成基本的CRUD(Create、Read、Update、Delete)操作方法。对于Edit()操作方法来说,它用于处理编辑(更新)资源的请求。由于编辑操作需要指定要编辑的资源的唯一标识符,因此在URL中传递ID参数是必要的。

而ID参数在Edit()操作方法中被传递两次的原因是为了满足不同的请求方式。在RESTful设计中,更新资源的请求应该使用HTTP的PUT或PATCH方法。但由于浏览器的限制,HTML表单只支持GET和POST方法。因此,为了兼容浏览器的表单提交,ASP.NET Core MVC的脚手架工具会生成两个Edit()操作方法:一个用于处理GET请求,另一个用于处理POST请求。

在GET请求的Edit()操作方法中,ID参数被用于获取要编辑的资源,并将其传递给视图进行显示。而在POST请求的Edit()操作方法中,ID参数则用于指定要更新的资源的唯一标识符。通过将ID参数传递两次,可以保证在编辑操作时能够正确地定位和更新资源。

总结起来,ASP.NET Core MVC中的Edit()操作方法在脚手架中会生成两个版本,一个用于处理GET请求,另一个用于处理POST请求。ID参数被传递两次是为了满足RESTful设计的要求,并兼容浏览器的表单提交方式。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各类业务需求。产品介绍链接
  • 腾讯云云数据库MySQL版:高性能、可扩展的关系型数据库服务。产品介绍链接
  • 腾讯云对象存储(COS):安全、稳定、低成本的云端存储服务。产品介绍链接
  • 腾讯云人工智能(AI):提供丰富的人工智能服务和解决方案,助力业务创新。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

ActionLink方法第一个参数是想要呈现链接文本 (例如,Edit Me)。第二个参数是要调用操作方法名称(本例Edit方法)。...因此,ASP.NET 将http://localhost:xxxxx/Movies/Edit/4转化到Movies 控制器Edit操作方法参数ID等于 4 请求。...例如,URL: http://localhost:xxxxx/Movies/Edit?ID=3还会将参数ID为 3请求传递给Movies控制器Edit操作方法。 ? 打开Movies控制器。...(使用 Distinct修饰符,不会添加重复流派 -- 例如,我们示例添加两次喜剧)。 该代码然后ViewBag对象存储了流派数据列表。...ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view) 9. ASP.NET MVC 5 - 给电影表和模型添加新字段 10.

6.7K110

ASP.NET MVC学习笔记06编辑方法和编辑视图

@Html.ActionLink("Edit", "Edit", new { id=item.ID }) Html对象是一个 Helper, 以属性形式System.Web.Mvc.WebViewPage...ActionLink方法第一个参数是想要呈现链接文本 (例如,Edit Me)。第二个参数是要调用操作方法名称(本例Edit方法)。...因 此,ASP.NET 将 http://localhost:xxxxx/Movies/Edit/4转化到 Movies 控制器 Edit操作 方法,参数 ID等于1 请求。...ASP.NET MVC model binder接收form所post数据,并转换所接收 Movie请求数据从而创建一个Movie对象。...(使 用 Distinct修饰符,不会添加重复流派 – 例如,我们示例添加两次喜剧)。 该代码然后ViewBag对象存储了流派数据列表。

5K50

Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图

本节,您将开始修改为电影控制器所新加操作方法和视图。然后,您将添加一个自定义搜索页。 浏览器地址栏里追加/Movies, 浏览到Movies页面。并进入编辑(Edit)页面。...最后一个参数是一个匿名对象,用来生成路由数据 (本例ID 为 4 )。...因此,ASP.NET 将http://localhost:xxxxx/Movies/Edit/4转化到Movies 控制器Edit操作方法参数ID等于 4 请求。...显示已筛选电影。 如果您更改SearchIndex方法签名,改为参数idGlobal.asax文件设置默认路由将使得: id参数将匹配{id}占位符。...(使用 Distinct修饰符,不会添加重复流派 -- 例如,我们示例添加两次喜剧)。该代码然后ViewBag对象存储了流派数据列表。 下面的代码演示如何检查movieGenre参数

4.3K100

ASP.NET MVC 5 - 控制器

解决方案资源管理器,用鼠标右键单击控制器文件夹(Controllers ),然后选择“添加控制器“。 ? 添加Scaffold对话框,单击MVC5控制器 - 空,然后单击“添加”。 ?...如果没有明确指定操作方法,Index方法会默认被控制器类调用。 第三部分URL段(Parameters参数)是路由数据。本教程,稍后我们将看到路由数据。...改变您Welcome 方法来包含两个参数,如下所示。需要注意是,示例代码使用了C#语言可选参数功能,numTimes参数值时,默认值为1。...); } ASP.NET MVC应用程序,通过参数传递路由数据是为更典型应用(如同上面用query string传递 ID参数)。...ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view) 9. ASP.NET MVC 5 - 给电影表和模型添加新字段 10.

2.6K80

Asp.Net MVC4入门指南(5):从控制器访问数据模型

· Views\Movies文件夹创建Create.cshtml、 Delete.cshtml、 Details.cshtml、 Edit.cshtml和Index.cshtml 文件。...ASP.NET MVC 4 自动创建 CRUD (创建、 读取、 更新和删除) 操作方法,和相关视图文件(CRUD 自动创建操作方法和视图文件被称为基础结构文件)。...例如,Details.cshtml模板,DisplayNameFor 和DisplayFor HTML Helper通过强类型Model对象传递了电影每个字段。...请注意这些代码是如何在Index操作方法,创建List对象,并调用View方法。...并添加一个SearchIndex方法和SearchIndex视图,使您可以在数据库搜索电影了。从控制器访问数据模型是MVC数据传递重要知识部分,深入理解了这部分内容才能更好进行MVC开发。

4.2K50

ASP.NET MVC学习笔记02控制器和路由

当我们VS创建一个新 ASP.NET MVC程序,程序将会自动使用默认路由表。 默认路由表 默认路由表存放在App_Start/RouteConfig.cs 。 ?...通过路由参 URLParameters,也就是参数传递部分。 修改Welcome方法,如下图,给welcome方法添加两个形参name和num,并通过htmlencode编码后输出。 ?...参数自动装配 再修改一下welcome方法,将num改为id,输入url时,把id写在开头,用“?”分割,传入name。 ? ASP.NET MVC路由自动匹配了ID这个参数为什么呢?...看看上图中 ASP.NET默认路由表,url: "{controller}/{action}/{id}",这一行已经添加id这个参数,因此ASP.NET MVC会自动为我们匹配ID参数。...ASP.NET MVC应用程序,通过参数传递路由数据是为更典型应用(如同上面用 query string传递ID参数)。

1.5K40

Asp.Net MVC4入门指南(2):添加一个控制器

解决方案资源管理器,用鼠标右键单击控制器文件夹,然后选择“添加控制器“。 ? 命名新控制器为“HelloWorldController”。...保留默认模板为“Empty MVC controller”,并单击“ 添加“。 ? 请注意,解决方案资源管理器中会创建一个名为HelloWorldController.cs新文件。...根据传入URL,ASP.NET MVC调用不同控制器类(和它们之中不同操作方法)。...改变您Welcome 方法来包含两个参数,如下所示。需要注意是,示例代码使用了C#语言可选参数功能,numTimes参数值时,默认值为1。...你可以对参数name 和numtimes 尝试不同值。 ASP.NET MVC model binding system 会自动将地址栏URL里 query string映射到您方法参数

99170

ASP.NET Core 基础知识】--路由和请求处理--Attribute路由

一、介绍 ASP.NET Core,路由是将传入URL请求映射到正确控制器和操作方法。...基本概念: **路由:**ASP.NET Core,路由是将URL请求映射到正确控制器和操作过程。...ASP.NET Core,控制器类必须继承自Controller或ControllerBase类。 **操作方法:**操作方法是控制器中用于处理HTTP请求具体实现。...3.2 Action上使用Attribute路由 ASP.NET Core,我们可以操作方法上使用[Route]属性来定义操作方法级别的路由规则。...四、Attribute路由高级使用 4.1 路由参数 ASP.NET Core ,我们可以使用 Attribute 路由来定义路由参数。这可以让我们更精确地控制路由生成。

12600

.NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRFCSRF)攻击处理

而我们这一章就来说道说道如何在ASP.NET Core处理“跨站请求伪造(XSRF/CSRF)攻击”,希望对大家有所帮助 写在前面 上篇文章发出来后很多人就去GitHub上下载了源码,然后就来问我说为什么登录功能都没有啊...ASP.NET Core MVC 2.0或更高版本,FormTagHelper为HTML表单元素注入防伪造令牌。...所有ASP.NET Core MVC 和 Razor 页模板表单都会生成 antiforgery 令牌。...ASP.NET Core MVCAjax处理跨站请求伪造(XSRF/CSRF)注意事项 ValidateAntiForgeryToken 进行Token验证时候Token是从Form里面取。...,然后给大家讲解了如何进行跨站点请求伪造处理,后面引出了ASP.NET Core如何对其进行处理

4K20

Asp.NetCore Web开发之路由

接着讲asp.net core web开发,这节讲路由系统(Route)。...asp.net core通过路由来将请求映射到对应action,主要用到两个中间件,UseRouting()和UseEndpoints() 前者用于设置请求和action映射关系,后者用于请求没有对应...; }); 这是一个传统路由,用于将请求映射到控制器action,默认是访问home控制器下index界面,并且支持使用REST风格传入一个可空参数(不是必须),也就是/{id?}...Web API 路由规范 web api,一般会使用ApiController这个特性标记控制器,它作用仅返回序列化数据,不会返回视图,下面看段代码: app.UseEndpoints...] public string Post() { return "error"; } 这样限制了访问方法必须是Post,而且我们可以自定义url路径,上述代码我将Post()action

85820

ASP.NET Core Razor Pages 初探

最近新建 Asp.net Core MVC 项目的时候不小心选错了个模板,发现了一种新项目模板。它使用cshtml视图模板,但是没有Controller文件夹。...后来才发现这是ASP.NET Core框架新推出Razor Pages技术。 什么是Razor Pages “Razor Pages 使编码更加简单更加富有生产力”这是微软说==!。...Action。...formaction相当于form元素上指定action属性提交地址,并且url上附带了一个参数handler=save,这样后台就能查找具体要执行哪个方法了。...虽然不是实时双向绑定,但是也实现了简单前后端绑定技术。另外提一句既然我们前端数据是通过表单提交,那么跟mvc一样,使用FromFormAttribute其实一样可以进行参数绑定

1.9K20

ASP.NET Core 基础知识】--Web API--创建和配置Web API(一)

ASP.NET Core,默认路由模板通常是{controller=Home}/{action=Index}/{id?},表示控制器默认为Home,操作方法默认为Index,而id是可选。...属性路由(Attribute Routing): ASP.NET Core允许使用属性路由控制器和操作方法上直接定义路由模板。...路由中间件: ASP.NET Core,路由是通过路由中间件来处理。路由中间件HTTP请求到达控制器之前,负责解析URI并确定要执行控制器和操作方法。...四、数据模型和DTOs 4.1 创建数据模型 ASP.NET Core Web API,数据模型通常用于表示应用程序实体,这些实体可以映射到数据库表、API输入输出等。...五、总结 ASP.NET Core Web API创建和配置过程,我们首先使用.NET CLI创建项目,并了解了项目结构。

46200

Magicodes.WeiChat——ASP.NET Scaffolding生成增删改查、分页、搜索、删除确认、批量操作、批量删除等业务代码

ASP.NET Scaffolding虽然有些不足,但是思虑再三,考虑到时间成本,Magicodes.WeiChat还是采用了ASP.NET Scaffolding模板来生成业务代码。...其中,我们需要重点关注以下两个目录: MvcControllerWithContext:该目录下模板为添加控制器时,选择基架项为【包含视图 MVC5 控制器(使用Entity Framework)】...MvcView:该目录下模板为添加控制器时,选择基架项为【包含视图 MVC5 控制器(使用Entity Framework)】时生成增删改查视图代码T4模板。 然后,我们就开始生成之旅。...代码生成 添加控制器,选择代码基架 ? 这里选择【包含视图MVC5控制器(使用 Entity Framework)】。 添加控制器 ? 个人比较喜欢使用异步控制器操作。...之所以没有沿用之前摸索出来代码生成方式,主要是因为个人精力有限,暂时难以花费太多精力代码生成这块。 好架构是根据自身业务重构出来,适合自己架构就是好

90120

小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

看张队公众号,篇篇都看不懂。。。) 前提:会一点点 VUE、会一点 Axios、会一点点 Asp.net Core。...] 当前请求路由数据 [FromServices] 作为操作参数插入请求服务 来一张 Postman 图片: HTTP 请求,会携带很多参数,这些参数可以在前端设置,例如表单、Header、...WebApi 应用 首先创建一个 Asp.Net Core MVC 应用,然后 Controllers 目录添加一个 API 控制器 DefaultController.cs。...请教了大神,大神解释说,ASP.NET Core 有路由规则表,路由表是全局性、唯一性程序运行时,会把所有路由规则收集起来。...ASP.NET Core 自动生成可读写 Controller ,默认都是使用 [Bind] 来绑定数据。 文档定义:用于对复杂类型模型绑定。

5.5K00

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

Visual C# --> Web --> ASP.NET Web应用程序 MVC此时处于选中状态,勾选“添加单元测试”(最好选上,利于后期调试)。...文件夹 --> 添加 --> 控制器,选择空类别基架模板: 添加Controllers文件夹中会多出文件“StoreController.cs”,并且文件夹Views下会多出“Store”文件夹,...Ctrl+F5,就是不调试启动: 然后可以自己添加方法: 修改Details方法,使其读取和显示一个名为ID参数Asp.Net MVC 5默认路由约定:将操作方法名称后面的URL这个片段作为一个参数...,该参数名称为ID,如果操作方法中有名为ID参数,那么Asp.Net MVC 会自动将这个URL片段作为参数进来,就是ID值!...3 ,MVC,控制器才是核心,每一个请求都必须通过控制器处理,而且有些请求不需要模型和视图! 控制器就是MVC应用程序“指挥员”,它紧密编排用户、模型对象和视图交互。

1.9K20
领券