问题标签 [asp.net-core-routing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9541 浏览

c# - 根据字符串获取元素

我正在使用 mvc 6 创建一个 web api。现在我正在尝试从我的数据库中获取一个元素。此表中的键是一个字符串(电子邮件地址)。我无权访问此数据库,因此无法更改此表的键。

现在,当创建一个演示 webapi 时,我能够创建一个控制器来基于一个 int 键来提取项目。但是当试图通过字符串获取元素时,程序崩溃了。

当尝试访问此路径(example.com/api/Todo/key)作为字符串的键时,我在 startup.cs 中出现异常

浏览器中的异常显示:

System.InvalidOperationException 路由“api/Todo/{id:string}”上的约束条目“id”-“string”无法由“DefaultInlineConstraintResolver”类型的约束解析器解析。

代码中断的startup.cs部分是:

我似乎无法弄清楚为什么我不允许通过作为字符串的键获取项目。这甚至可能吗?如果是这样,我做错了什么?

0 投票
1 回答
8113 浏览

c# - MVC 6 中的路由

我有一个超级简单的控制器,有两种方法:

一个选择所有用户,另一个返回所有用户。在 web api 2 中,我可以使用以下路线并且一切正常:

我在 startup.cs 中设置了以下路由:

然而,这给了我一个AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied

我究竟做错了什么?

0 投票
1 回答
4272 浏览

c# - 请求匹配多个操作导致在 ASP.NET 5 / MVC 6 中具有不同参数的操作不明确

我的项目中有一条简单的路线:

在我的控制器中,我有两个动作:

现在,当我尝试执行类似的 urlapi/controller/get?id=1时它不起作用,因为框架无法区分两个动作。据我记得,它在普通的 web api 中运行得很好,因为很明显这个 url 只匹配基于它的参数的一个动作。我做错了什么还是新的 MVC6 不支持它?

0 投票
2 回答
15136 浏览

c# - MVC 6 多种获取方法

我试图支持每个控制器的多个 Get() 方法,以及通过 web api 访问的特殊命名的方法。我已经在 MVC 5 中做到了这一点,但似乎无法弄清楚它是如何在 MVC 6 中完成的。有什么想法吗?谢谢。

0 投票
14 回答
397376 浏览

c# - 如何将多个参数传递给 ASP.NET Core 中的 get 方法

如何将多个参数传递给 MVC 6 控制器中的 Get 方法。例如,我希望能够拥有以下内容。

所以我可以查询。

0 投票
7 回答
38197 浏览

c# - 如何在 ASP.NET Core 中强制执行小写路由?

routes.LowercaseUrls = true;在 ASP.NET 4 中,这与在应用程序的RegisterRoutes处理程序中一样简单。

我在 ASP.NET Core 中找不到实现此目的的等价物。我想它会在这里:

但是configureRoutes看起来没有任何东西允许它......除非在某个地方有一个我在文档中找不到的扩展方法?

0 投票
2 回答
8070 浏览

c# - 带有可选参数/默认参数值的 ASP.NET5 MVC 6 路由

我正在 VS2015、C#、ASP.NET5 MVC6 堆栈中构建 Restful 风格的 API,但在路由方面遇到了一些麻烦。

我直接在控制器中使用属性:

当我打电话时它就可以工作- 我从数据库api/report/machine/[machineName]-5接收文件。5

但我想cnt使用默认值使参数可选 - 所以调用api/report/machine/[machineName]是有效的。

基于http://stephenwalther.com/archive/2015/02/07/asp-net-5-deep-dive-routing我到目前为止尝试过:

[HttpGet("machine/{machineId}-{cnt:int=10}")]- 控制器不捕捉api/machine/{machineName}(我得到欢迎页面代码)

[HttpGet("machine/{machineId}-{cnt?}")]- 应用程序无法启动(我什至没有获得 MVC 欢迎页面)

[HttpGet("machine/{machineId}-{cnt:int?}")]- 应用程序无法启动(如上)

有任何想法吗?

整个控制器的代码(我没有指定任何其他路线): http: //pastebin.pl/view/11050284

0 投票
1 回答
2885 浏览

c# - Url.Action 不适用于控制器中使用路由注释指定的路由

我有一个如下所示的 AdminController:

AdminController [Route("admin")]

Index() (landing page for all administrative content)

UserIndex() - [Route("users")]
UserDetails() - [Route("users/details/{id}")]

RoleIndex() - [Route("roles")]
RoleDetails() - [Route("roles/details/{id}")]

这些等同于以下 URL 模式:

管理员/用户
管理员/用户/详细信息/1

但是,如果我尝试在我看来执行以下操作,则它不起作用:

这不应该足够聪明地输出:'/admin/users/details'吗?

它只有在我这样做时才有效,Url.Action("Index", "Admin")因为它没有路由标签。

更新:

我正在尝试将Kendo 模板语法与 Kendo Grid ClientTemplate 列一起使用:

每行的链接最终如下所示: 'localhost:9000/123' /admin/users/detail 完全被忽略...

这是我试图在 AdminController 中调用的方法的确切声明:

0 投票
1 回答
24443 浏览

c# - 在 ASP.NET Core Web Api 中有多个带有多个查询字符串参数的 get 方法

我正在构建一个 web api,其中我有一个必须有 3 个 get 方法的资源,如下所示:

只有一个参数(pointId)的 get 方法工作正常,因为它不被视为查询字符串,而是 id。然而,其余 2 种方法似乎无法被 ASP.NET 中的路由器区分。

我真的很茫然,无法弄清楚为什么它不起作用。我能够解决的是,如果我删除其中一种方法,另一种方法可以正常工作。

关于我做错了什么有什么建议吗?

仅供参考,相应的 url:s 应该如下所示:

谢谢!

0 投票
5 回答
43781 浏览

c# - AmbiguousActionException:匹配多个操作。以下操作匹配路线数据并满足所有约束

我正在使用 ASP.NET Core MVC 创建一个网站。当我单击某个操作时,我收到此错误:

这就是我在我的 ProductsController 的 index.cshtmlm 中定义我的操作的方式:

这是我的路由:

以下是我定义动作的方式:

我做错了什么?

更新

感谢@MegaTron 的回复,但是我想知道为什么我不能为不同的控制器提供相同的操作路径。如果我有许多控制器每个都创建实体,我觉得你提出的解决方案无法很好地扩展。