C# 更改ASP.NET核心页面中的默认路由
由于我不熟悉ASP.NET核心中的Razor Pages概念,我想应用一个通用URL将区域性参数传递给路由 我已经用MVC实现了这一点,但我也想将其应用于Razor页面 以下是我在MVC中所做的工作及其所需的工作C# 更改ASP.NET核心页面中的默认路由,c#,asp.net-mvc,asp.net-core,razor-pages,C#,Asp.net Mvc,Asp.net Core,Razor Pages,由于我不熟悉ASP.NET核心中的Razor Pages概念,我想应用一个通用URL将区域性参数传递给路由 我已经用MVC实现了这一点,但我也想将其应用于Razor页面 以下是我在MVC中所做的工作及其所需的工作 routes.MapRoute( name: "default", template: "{culture}/{controller=Home}/{action=Index}/{id?}"); 我已经
routes.MapRoute(
name: "default",
template: "{culture}/{controller=Home}/{action=Index}/{id?}");
我已经将其应用于特定的页面及其工作
options.Conventions.AddPageRoute("/RealEstate/Index", "{culture}/RealEstate");
但当我想申请所有页面时,它不起作用,我不知道应该将什么作为页面名传递
options.Conventions.AddPageRoute("*", "{culture}/{*url}");
此外,我想将admin文件夹从该约定中排除为siteName.com/admin,而不是en-US/admin。此外,当用户首次打开站点时,我需要在URL中设置默认区域性,例如,将其设置为siteName.com并加载默认区域性,甚至默认情况下加载siteName.com/en-US
谢谢。您可以使用将路由模型约定应用于文件夹。这些文档有一个关于如何做到这一点的详细说明,我为您的目的对其进行了修改:
options.Conventions.AddFolderRouteModelConvention(“/”,model=>
{
foreach(model.Selectors中的var选择器)
{
selector.AttributeRouteModel=新的AttributeRouteModel
{
顺序=-1,
模板=AttributeRouteModel.CombineTemplates(
“{文化}”,
selector.AttributeRootModel.Template),
};
}
});
这将对所有页面应用约定,因为“/”
被设置为文件夹,因此适用于根级别。这并不是像我链接的示例中那样添加新的选择器,而是修改现有选择器以预先添加{culture}
标记,您可以通过名称在页面中访问该标记,例如:
public void OnGet(字符串区域性)
{
// ...
}
如果我们添加了一个新的选择器,那么无论是否使用文化,页面都可以访问,这使得它成为可选的。使用我展示的方法,需要
{culture}
令牌,如操作中所示。感谢Kirk Larkin的帮助
我使用了他的答案,并添加了一个小的修改,将Admin从区域性路由中排除,并在没有选择区域性时为网站设置默认区域性
options.Conventions.AddFolderRouteModelConvention("/", model =>
{
foreach (var selector in model.Selectors)
{
if (selector.AttributeRouteModel.Template.StartsWith("Admin"))
{
selector.AttributeRouteModel = new AttributeRouteModel
{
Order = -1,
Template =
selector.AttributeRouteModel.Template,
};
}
else
{
selector.AttributeRouteModel = new AttributeRouteModel
{
Order = -1,
Template = AttributeRouteModel.CombineTemplates(
"{culture=en-US}",
selector.AttributeRouteModel.Template),
};
}
}
});
您是如何修复默认语言的?这行模板=AttributeRouteModel.CombineTemplates({culture=en US})对我不起作用。