【发布时间】:2019-12-29 09:03:13
【问题描述】:
当我从另一个继承剃须刀页面时,我的新测试项目遇到了问题。 所以我有一个编辑器页面,我想使用相同的流程,只是给了一个额外的参数(id),代码是:
public class EditModel : BaseModel
{
public EditModel()
{
}
public Task<IActionResult> OnPostAsync(int id)
{
...
}
}
public class CreateModel : EditModel
{
public CreateModel()
{
}
public Task<IActionResult> OnPostAsync()
{
...
}
}
我还将编辑器 cshtml 定义为:
@page "{id:int}"
...
并将cshtml创建为:
@page
...
我希望路由很明显因为编辑器的参数不是可选的,但是创建不需要参数,但是我得到了错误:
多个处理程序匹配
如果我也在创建页面模型中定义参数,它开始使用 0 值。
对此我有两个问题:
我可以定义一个路由模板,我可以明确禁止参数(以及如何)以避免歧义吗?(现在我使用默认路由模板。)
我应该避免这种剃须刀页面的继承吗?我可以,除非这是设计使然,并使用其他方式来做到这一点。
我想提一下,我知道我可以定义另一个不同于默认 onget/onpost/etc 的处理程序方法并以这种方式使用它,但是我认为如果我能以一种好的方式定义路由,上述问题应该可以正常工作.
【问题讨论】:
标签: c# asp.net asp.net-routing asp.net-core-3.1