...这可能根本不是真正的问题,但这就是我现在的样子。
我有一个具有多层继承的控制器结构。基本控制器是实现控制器的控制器,具有称为Create(Guid var1, DateTime? var2)
的方法,称为/MyDomain/Create/00000-0000-0000-000000
。
我目前正在尝试在继承树中较低的控制器中实现一个方法,其中包含采用 QueryString 参数的签名Create()
。( /MyDomain/Create?otherVar=somevalue
(但是,ASP.NET 认为这作为"端点"无效,并抛出一条错误消息,指出The parameters dictionary contains a null entry for parameter 'var1' of non-nullable type 'System.Guid' for method 'System.Web.Mvc.ActionResult Create(System.Guid, System.Nullable`1[System.DateTime])'
我真的不知道这里发生了什么。如果我尝试在同一控制器上调用另一个方法(名称是唯一的,并且在继承堆栈中没有使用,例如 /MyDomain/DifferentMethod
(它可以毫无问题地工作。
我的谷歌富在这个问题上遇到了不足。
所以你有这样的东西:
public abstract class BaseController{
[HttpGet]
public IActionResult Create(Guid var1, DateTime var2){..
}
和
public class SomeClassController : BaseController{
[HttpGet]
public IActionResult Create(){..
}
问题是您不能有 2 个具有相同名称和不同签名的路由。这是因为路由不知道你想去哪里:你想要的网址是'/blalbalba/Create/'女巫?基类还是继承一次?这不是那么明显。
Ps 看看这个答案:
ASP.NET MVC 模棱两可的操作方法