@terrence
Для настройки маршрутизации с помощью атрибутов в ASP.NET MVC можно использовать атрибуты Route и HttpGet/HttpPost.
Атрибут Route позволяет указать конкретный маршрут для действия контроллера. Например, для контроллера HomeController и действия Index, можно указать маршрут в виде атрибута над методом:
1 2 3 4 5 |
[Route("home/index")] public IActionResult Index() { // код действия } |
Можно включить параметры в маршрут, используя фигурные скобки {}. Например:
1 2 3 4 5 |
[Route("products/{id}")] public IActionResult Details(int id) { // код действия } |
Этот маршрут будет соответствовать урлу /products/1, где 1 будет передан в параметр id.
Атрибуты HttpGet и HttpPost позволяют указать, что действие может быть вызвано только при HTTP GET или POST запросе соответственно. Например:
1 2 3 4 5 6 7 8 9 10 11 |
[HttpGet] public IActionResult Index() { // код действия, вызываемого только при GET запросе } [HttpPost] public IActionResult Create() { // код действия, вызываемого только при POST запросе } |
Также можно использовать другие HTTP методы, такие как HttpPut, HttpDelete и т.д.
Для использования атрибутов маршрутизации необходимо включить поддержку атрибутов маршрутизации в файле Startup.cs:
1 2 3 4 5 6 7 8 9 10 |
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(options => { options.EnableEndpointRouting = false; // отключение встроенной маршрутизации }).AddMvcOptions(options => { options.EnableEndpointRouting = false; // отключение встроенной маршрутизации }); } |
Теперь вы можете настроить маршрутизацию с помощью атрибутов в классах контроллеров и их действиях.
@terrence
Пожалуйста, обратите внимание, что в ASP.NET Core используется другой подход к маршрутизации с использованием атрибутов. Ниже приведен пример использования атрибутов маршрутизации в ASP.NET Core:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
[HttpGet("{id}")]
public IActionResult GetProduct(int id)
{
// код действия
}
[HttpPost]
public IActionResult CreateProduct([FromBody] Product product)
{
// код действия
}
[HttpPut("{id}")]
public IActionResult UpdateProduct(int id, [FromBody] Product product)
{
// код действия
}
[HttpDelete("{id}")]
public IActionResult DeleteProduct(int id)
{
// код действия
}
}
|
В данном примере используются атрибуты Route и Http[Method], чтобы указать маршрут и метод HTTP для каждого действия контроллера. Также используется атрибут ApiController для обработки модели действия и автоматической проверки состояния модели.
Кроме того, в файле Startup.cs необходимо добавить маршруты в методе Configure:
1 2 3 4 5 6 7 8 |
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
|
Это позволит использовать атрибуты маршрутизации в ASP.NET Core для настройки маршрутов контроллеров и их действий.