我尝试过:
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Index", "old");
options.Conventions.AddPageRoute("/NewIndex", "");
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
抛出此异常:
AmbiguousMatchException:该请求匹配了多个端点。 匹配项:
页面:/ Index
页面:/ NewIndex
我发现this表示建议重命名“索引”页面,但显然,即使不是很好的理由,也可以解决。我不能只更改默认页面而不重命名/ Index页面吗?
答案 0 :(得分:0)
“剃刀页面”中的默认页面是为其生成了空字符串路由模板的页面。您可以使用自定义PageRouteModelConvention
删除为 Index.cshtml 页面生成的空字符串路由模板,然后将其添加到您想要作为默认页面的任何页面上:>
public class HomePageRouteModelConvention : IPageRouteModelConvention
{
public void Apply(PageRouteModel model)
{
if(model.RelativePath == "/Pages/Index.cshtml")
{
var currentHomePage = model.Selectors.Single(s => s.AttributeRouteModel.Template == string.Empty);
model.Selectors.Remove(currentHomePage);
}
if (model.RelativePath == "/Pages/NewIndex.cshtml")
{
model.Selectors.Add(new SelectorModel()
{
AttributeRouteModel = new AttributeRouteModel
{
Template = string.Empty
}
});
}
}
}
您在ConfigureServices中注册约定:
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.Add(new HomePageRouteModelConvention());
}).SetCompatibilityVersion(CompatibilityVersion.Latest);
您可以在此处了解有关自定义页面路由模型约定的更多信息:https://www.learnrazorpages.com/advanced/custom-route-conventions