dotnet / dotnet/aspnetcore

[Refactoring] Provide toggle between [FromX] and implicit attributes

Open
#35,762 5 comments 2 reactions 0 assignees View on GitHub
analyzer area-minimal feature-minimal-actions Priority:0
Dominant language
C#
Stars
38.4k
Forks
10.9k
Avg merge
2d 10h
Merged PRs (30d)
281

Description

This infers [FromQuery] so the attribute isn't required.

```C#
app.MapGet("/todos", ([FromQuery]int pageIndex, [FromQuery] int pageSize) =>
{
return db.GetTodos().Take(pageIndex).Skip(pageSize);
});
```

Query string is inferred when the parameter names don't appear in the route. We would only suggest this when we can see literal strings for route patterns (where we can tell what the route parameters are).

```C#
app.MapGet("/todos", (int pageIndex, int pageSize) =>
{
return db.GetTodos().Take(pageIndex).Skip(pageSize);
});
```

This should also work for [FromRoute] attributes:

```C#
app.MapGet("/todos/{pageIndex}/{pageSize}", ([FromRoute]int pageIndex, [FromQuery] int pageSize) =>
{
return db.GetTodos().Take(pageIndex).Skip(pageSize);
});
```

The [FromRoute] isn't necessary:

```C#
app.MapGet("/todos/{pageIndex}/{pageSize}", (int pageIndex, int pageSize) =>
{
return db.GetTodos().Take(pageIndex).Skip(pageSize);
});

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.