首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同一控制器中具有不同参数的多个端点

同一控制器中具有不同参数的多个端点
EN

Stack Overflow用户
提问于 2020-08-11 21:51:07
回答 2查看 1.5K关注 0票数 1

自从我不得不这么做已经有很多年了,一定是太热了!

我有我的家庭控制器:

代码语言:javascript
运行
复制
    public ActionResult Index(string param1, string param2, string param3)
    {
        return View();
    }

    public IActionResult Index()
    {
        return View();
    }

我有1个Index.cshtml页面。

在我的初创公司,cs:

代码语言:javascript
运行
复制
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}");

            endpoints.MapControllerRoute(
                name: "default2",
                pattern: "{controller=Home}/{action=Index}/{param1}/{param2}/{param3}");
        });

我得到的错误是:

**{"error":"APP:请求匹配多个端点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-12 05:37:26

我试过了,

代码语言:javascript
运行
复制
using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Routing;

namespace RouteTemplateProvider.Controllers
{
    public class RouteWithParamAttribute : Attribute, IRouteTemplateProvider
    {
        public string Template => "{param1}/{param2}/{param3}";
        public int? Order { get; set; }
        public string Name { get; set; }
    }
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        [RouteWithParam]
        public string Index(string param1, string param2, string param3)
        {
            return "Index with param";
        }

        public string Index()
        {
            return "Index no param";
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2020-08-12 04:11:39

代码语言:javascript
运行
复制
public class HomeController : Controller
{
    // hits when navigating to https://localhost:5001/one/two/three
    [HttpGet("{param1}/{param2}/{param3}")]
    public IActionResult Index(string param1, string param2, string param3)
    {
        return View();
    }

    // hits when navigating to https://localhost:5001/
    public IActionResult Index()
    {
        return View();
    }
}

在Startup#Configure中

代码语言:javascript
运行
复制
app.UseEndpoints(endpoints =>
{
  endpoints.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63359632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档