我有这样的代码:
public void ConfigureServices(IServiceCollection services)
{
services
.AddMvc()
.AddRazorPagesOptions(options => {
options.Conventions.AddPageRoute("/Index", "Index.html");
options.Conventions.AddPageRoute("/rt", "rt.html");
});
}难道不是写每一页,而是有这样一条通配符路径吗?
options.Conventions.AddPageRoute("/*", "/{*.html}");发布于 2018-04-08 16:37:26
没有内置的方式来添加这样的通配符路由。但是,您可以通过简单的页面路由约定(IPageRouteModelConvention的实现)来实现它。下面是一个工作示例:
public class HtmlExtensionPageRouteModelConvention : IPageRouteModelConvention
{
public void Apply(PageRouteModel model)
{
var selectorCount = model.Selectors.Count;
for (var i = 0; i < selectorCount; ++i)
{
var attributeRouteModel = model.Selectors[i].AttributeRouteModel;
if (String.IsNullOrEmpty(attributeRouteModel.Template))
{
continue;
}
attributeRouteModel.SuppressLinkGeneration = true;
model.Selectors.Add(new SelectorModel
{
AttributeRouteModel = new AttributeRouteModel
{
Template = $"{attributeRouteModel.Template}.html",
}
});
}
}
}配置:
public void ConfigureServices(IServiceCollection services)
{
services
.AddMvc()
.AddRazorPagesOptions(options => {
options.Conventions.Add(new HtmlExtensionPageRouteModelConvention());
});
}https://stackoverflow.com/questions/49709615
复制相似问题