面试官:如何在ASP.NET Core里给Action传递参数

简介: 在ASP.NET Core 中给Action传参是在面试和实际开发中必定会遇到和使用到的,那么下面我们就来说说如何给Action传参。常用的传参方式有四种:1. url 方式;2. querystring 方式;3. request header 方式;4. request body 方式。

TIP:这篇文章属于入门级的文章,面向的读者是刚刚接触.NET Core的开发人员。

在ASP.NET Core 中给Action传参是在面试和实际开发中必定会遇到和使用到的,那么下面我们就来说说如何给Action传参。常用的传参方式有四种:

  1. url 方式;
  2. querystring 方式;
  3. request header 方式;
  4. request body 方式。


URL方式

URL方式是最简单的方式,下面的代码段就展示了Action如何接收URL参数。

[HttpGet]
[Route("Test/{id:int}")]
public IActionResult Get(int id)
{
   return View(id);
}

上面代码中,在 Route 特性里我们定义了 url 中的 id 的参数必须是 int 类型。传递参数的 URL 形式如下:

http://localhost:5050/Test/456

querystring 方式

querystring 方式使用的是 ? 模式,它的好处是如果要向后兼容的话,不需要改变 URL 结构,下面这段代码就演示了 Action 如何实现获取 querystring 方式传递进来的参数。

[HttpGet]
[Route("Test/{id:int}")]
public IActionResult Get([FromQuery
(Name = "id")] int id = 456)
{
   return Ok(id);
}

上面方法中的的 id 参数我们给它赋予了一个默认值 456 ,这说明 id 是可选的,如果我们不传入 id 值的话,就会使用 456 作为参数值。这样的好处是当遗漏参数时保证我们的系统依然可以正常使用。这种传递参数的方式如下:

http://localhost:5050/Test?id=786

request header 方式

这种方式一般用来传递 token、身份信息、验证信息和隐私信息。例如我们将用户的手机号放在header中,Action 接收 header 参数的方式如下:

[HttpGet]
[Route("Test/{phone}")]
public IActionResult Get([FromHeader] string phone)
{
   return Ok(phone);
}

request body 方式

这种方式经常用于新增和修改操作,是web开发中最常见的方式。下面的代码实现了接收 body 参数的方法:

[HttpPost]
[Route("Test")]
public IActionResult Insert([FromBody] int id)
{
   return Ok(id);
}
目录
相关文章
|
11天前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
3月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
68 0
|
3月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
37 0
|
1月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(持续更新)
C#/.NET/.NET Core拾遗补漏合集(持续更新)
|
1月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
60 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
2月前
|
开发框架 前端开发 .NET
福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!
为了便于大家查找,特将之前开发的.Net Core相关的五大案例整理成文,共计440页,32w字,免费提供给大家,文章底部有PDF下载链接。
32 1
福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!
|
2月前
|
算法 BI API
C#/.NET/.NET Core优秀项目和框架2024年1月简报
C#/.NET/.NET Core优秀项目和框架2024年1月简报
|
2月前
|
机器学习/深度学习 存储 编解码
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
42 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0