Server直接通过Web请求的body段数据,路由参数和URL参数创建三个Player对象
[HttpPost(nameof(playerGetByBodyRouteURL) + "/{id}/{name}/{number}")]
public IEnumerable<Player> playerGetByBodyRouteURL([FromBody]Player player1, [FromRoute]Player player2, [FromQuery]Player player3)
return new List<Player>(){
player1, player2, player3
- Action方法playerGetByBodyRouteURL中包含三个Player类型的参数,一个来自请求的Body段,一个来自路由参数,一个来自URL参数。
- URL https://localhost:5001/players/playerGetByBodyRouteURL/1/Inzaghi/9?id=1&name=Zidane&number=5,在PostMan中调用。 Body段的JSON数据为:
{
“id”: 12,
“name”: “Sheva”,
“number”: 7
}
FromQueryAttribute,FromRouteAttribute和FromBodyAttribute让Action中参数绑定的方式变得非常清晰。建议大家在开发中,采用这种显示指定的方式来处理代码,这样会让代码更便于管理。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using football.Models;
namespace football.Controllers
[ApiController]
[Route("[controller]")]
public class PlayersController : ControllerBase
private readonly ILogger<PlayersController> _logger;
public PlayersController(ILogger<PlayersController> logger)
_logger = logger;
[HttpGet]
[Route(nameof(playerGetByURL))]
public Player playerGetByURL([FromQuery]Player player)
return player;
[HttpGet]
[Route(nameof(playerGetByRoute) + "/{id}/{name}/{number}")]
public Player playerGetByRoute([FromRoute] Player player)
return player;
[HttpPost(nameof(playerGetByBody))]
public Player playerGetByBody([FromBody]Player player)
return player;
[HttpPost(nameof(playerGetByBodyURL))]
public IEnumerable<Player> playerGetByBodyURL([FromBody]Player player1, [FromQuery]Player player2)
return new List<Player>(){
player1,player2
[HttpPost(nameof(playerGetByBodyRoute) + "/{id}/{name}/{number}")]
public IEnumerable<Player> playerGetByBodyRoute([FromBody]Player player1, [FromRoute]Player player2)
return new List<Player>(){
player1,player2
[HttpGet(nameof(playerGetByURLRoute) + "/{id}/{name}/{number}")]
public IEnumerable<Player> playerGetByURLRoute([FromQuery]Player player1, [FromRoute]Player player2)
return new List<Player>(){
player1,player2
[HttpPost(nameof(playerGetByBodyRouteURL) + "/{id}/{name}/{number}")]
public IEnumerable<Player> playerGetByBodyRouteURL([FromBody]Player player1, [FromRoute]Player player2, [FromQuery]Player player3)
return new List<Player>(){
player1, player2, player3
概要ASP.NET Core的Web API在调用过程中,经常涉及到Client端参数传递和Server端参数的接收的问题。其中参数主要包括URL参数,表单参数和路由参数等,如何处理好各种类型的参数传递,尤其是复杂类型参数的处理,是正确调用Web API的关键也是难点。本文通过介绍FromQueryAttribute,FromRouteAttribute和FromBodyAttribute三个Attribute,来介绍如果在URL,表单和路由中传递对复杂的对象参数。定义FromQueryAttrib
这两天看了CAP的源码,感觉自己和大神的差距实在太大,看源码学到的东西也很多,再也不用每天都是3层架构,一层一层的往下调用。
先说下我看到的只是一点点的CAP的源码,就看了订阅这块,.net core 使用services.AddHostedService<DefaultBootstrapper>,
AddHostedService是.net core 的一个后台进程,它会一直来把...
.NetCore3.1——自定义过滤器ActionFilterAttribute
在我们做项目开发的时候很多时候需要自己定义过滤器,来进行一些特殊的处理,最常见的就是验证Token什么的,判断你这一次的请求是否合法。还有很多的用法就看项目的实际情况去自定义策略了。下面我介绍一下我做的自定义策略。
首先添加一个MyAuthorizeFilter类库,继承ActionFilterA...
asp.net core webapi 怎么接收Josn呀并转化为实体
现在可以把JSON当一个参数比如 data = "JSON" 这样接收后序列化,有没有之前的接收自动转化的方法
异步方式:
特性Attribute
特性:是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。
特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性。
SQLSugar是一种ORM(对象关系映射)工具,可以帮助我们更轻松地操作数据库。下面是在ASP.NET Core MVC中使用SQLSugar进行多表查询的步骤:
1. 安装SQLSugar包
使用NuGet包管理器或通过命令行安装SQLSugar包。
2. 配置连接字符串
在appsettings.json文件中配置数据库连接字符串,例如:
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=databaseName;User Id=userId;Password=password;"
3. 配置SQLSugar实例
在Startup.cs文件中的ConfigureServices方法中添加以下代码来配置SQLSugar实例:
services.AddScoped<ISqlSugarClient>(provider =>
var connectionString = Configuration.GetConnectionString("DefaultConnection");
var db = new SqlSugarClient(new ConnectionConfig
ConnectionString = connectionString,
DbType = DbType.MySql,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
db.Aop.OnLogExecuting = (sql, pars) =>
Console.WriteLine($"{sql} {string.Join(",", pars.Select(p => $"{p.ParameterName}={p.Value}"))}");
return db;
这里使用了MySQL数据库,如果你使用的是其他类型的数据库,请根据需要进行修改。
4. 创建实体类
在Models文件夹下创建对应的实体类,例如:
public class Order
public int Id { get; set; }
public int CustomerId { get; set; }
public decimal TotalAmount { get; set; }
public DateTime OrderDate { get; set; }
public class Customer
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
5. 进行多表查询
在Controller中使用SQLSugar实例进行多表查询,例如:
public class OrderController : Controller
private readonly ISqlSugarClient _db;
public OrderController(ISqlSugarClient db)
_db = db;
public IActionResult Index()
var orders = _db.Queryable<Order, Customer>((o, c) => o.CustomerId == c.Id)
.Select((o, c) => new
o.Id,
c.Name,
o.TotalAmount,
o.OrderDate
.ToList();
return View(orders);
这里的多表查询是在Order表和Customer表之间进行的,通过CustomerId和Id进行关联。查询返回的结果是一个匿名类型,包含了订单的Id、客户的姓名、订单的总金额、订单的日期等信息。最后,将查询结果传递给View进行显示。
以上就是使用SQLSugar在ASP.NET Core MVC中进行多表查询的基本步骤。