问题标签 [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.
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部分是:
我似乎无法弄清楚为什么我不允许通过作为字符串的键获取项目。这甚至可能吗?如果是这样,我做错了什么?
c# - MVC 6 中的路由
我有一个超级简单的控制器,有两种方法:
一个选择所有用户,另一个返回所有用户。在 web api 2 中,我可以使用以下路线并且一切正常:
我在 startup.cs 中设置了以下路由:
然而,这给了我一个AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied
我究竟做错了什么?
c# - 请求匹配多个操作导致在 ASP.NET 5 / MVC 6 中具有不同参数的操作不明确
我的项目中有一条简单的路线:
在我的控制器中,我有两个动作:
现在,当我尝试执行类似的 urlapi/controller/get?id=1
时它不起作用,因为框架无法区分两个动作。据我记得,它在普通的 web api 中运行得很好,因为很明显这个 url 只匹配基于它的参数的一个动作。我做错了什么还是新的 MVC6 不支持它?
c# - MVC 6 多种获取方法
我试图支持每个控制器的多个 Get() 方法,以及通过 web api 访问的特殊命名的方法。我已经在 MVC 5 中做到了这一点,但似乎无法弄清楚它是如何在 MVC 6 中完成的。有什么想法吗?谢谢。
c# - 如何将多个参数传递给 ASP.NET Core 中的 get 方法
如何将多个参数传递给 MVC 6 控制器中的 Get 方法。例如,我希望能够拥有以下内容。
所以我可以查询。
c# - 如何在 ASP.NET Core 中强制执行小写路由?
routes.LowercaseUrls = true;
在 ASP.NET 4 中,这与在应用程序的RegisterRoutes
处理程序中一样简单。
我在 ASP.NET Core 中找不到实现此目的的等价物。我想它会在这里:
但是configureRoutes
看起来没有任何东西允许它......除非在某个地方有一个我在文档中找不到的扩展方法?
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
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 中调用的方法的确切声明:
c# - 在 ASP.NET Core Web Api 中有多个带有多个查询字符串参数的 get 方法
我正在构建一个 web api,其中我有一个必须有 3 个 get 方法的资源,如下所示:
只有一个参数(pointId)的 get 方法工作正常,因为它不被视为查询字符串,而是 id。然而,其余 2 种方法似乎无法被 ASP.NET 中的路由器区分。
我真的很茫然,无法弄清楚为什么它不起作用。我能够解决的是,如果我删除其中一种方法,另一种方法可以正常工作。
关于我做错了什么有什么建议吗?
仅供参考,相应的 url:s 应该如下所示:
和
谢谢!
c# - AmbiguousActionException:匹配多个操作。以下操作匹配路线数据并满足所有约束
我正在使用 ASP.NET Core MVC 创建一个网站。当我单击某个操作时,我收到此错误:
这就是我在我的 ProductsController 的 index.cshtmlm 中定义我的操作的方式:
这是我的路由:
以下是我定义动作的方式:
我做错了什么?
更新
感谢@MegaTron 的回复,但是我想知道为什么我不能为不同的控制器提供相同的操作路径。如果我有许多控制器每个都创建实体,我觉得你提出的解决方案无法很好地扩展。