相关疑难解决方法(0)

如何在ASP.NET MVC中使用小写路由?

如何在ASP.NET MVC中使用小写,加上下划线?所以我/dinners/details/2打电话DinnersController.Details(2),如果可能的话,/dinners/more_details/2打电话DinnersController.MoreDetails(2)

所有这些仍然使用像这样的模式{controller}/{action}/{id}.

url asp.net-mvc routes case

145
推荐指数
7
解决办法
5万
查看次数

如何在ASP.NET Core中强制执行小写路由?

在ASP.NET 4中,这与应用程序routes.LowercaseUrls = true;RegisterRoutes处理程序一样简单.

我无法在ASP.NET Core中找到实现此目的的等价物.我想它会在这里:

app.UseMvc(configureRoutes =>
{
    configureRoutes.MapRoute("Default", "{controller=App}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)

configureRoutes看起来没什么可以允许的......除非在某个地方找到一个我在文档中找不到的扩展方法呢?

asp.net-core-mvc asp.net-core

62
推荐指数
5
解决办法
1万
查看次数

将asp.net core 2.0 url重定向到小写

我已经看到你可以在ASP.NET Core 2.0中配置路由以生成小写网址,如下所述:https://stackoverflow.com/a/45777372/83825

使用这个:

services.AddRouting(options => options.LowercaseUrls = true);
Run Code Online (Sandbox Code Playgroud)

但是,虽然这对于生成URL很好,但它似乎没有做任何实际的ENFORCE,也就是说,将任何非全部小写的URL重定向到相应的小写URL(最好是通过301重定向).

我知道人们通过不同的套管网址访问我的网站,我希望它们永久都是小写的.

通过RewriteOptions和Regex进行标准重定向是唯一的方法吗?这样做的恰当表达方式是什么:

var options = new RewriteOptions().AddRedirect("???", "????");
Run Code Online (Sandbox Code Playgroud)

或者还有另一种方式吗?

lowercase url-redirection asp.net-core-2.0

9
推荐指数
1
解决办法
1339
查看次数

自动将 URL 查询参数键转换为短横线大小写?

ASP.NET 默认使用PascalCase URL 组件,但我想改用短横线大小写。我已经看到各种文章SO 答案通过RouteTokenTransformerConvention(下面的示例代码)在 ASP.NET Core 中优雅地实现了这一点。我喜欢这个策略,因为它 1) 确保 kebab-case 路由映射到正确的控制器,并使用正确的路由参数执行操作,而无需重复的手动工作;2) 允许您生成匹配的 kebab-case 链接。

但是,它不涉及 URL 查询。 有没有办法既能获得上述好处,又能在转换中包含查询键? 例如:

  • 我想要一个像这样的网址:some-route?product-category=some+product+category...
  • ProductCategory将绑定模型的属性设置为"some product category"
    • (无需我装饰或使用这个稍微好一点的ProductCategory想法使用其他一些手动解决方案)[FromQuery(Name="product-category")]
  • 查询不应被转换——仅转换

这是我从上述链接中获取的代码作为起点:

连字符.cs

using Microsoft.AspNetCore.Routing;
using System.Text.RegularExpressions;

public class Hyphenator: IOutboundParameterTransformer
{
    public string TransformOutbound(object value)
    {
        if (value == null) 
        { 
            return null; 
        }
        return Regex.Replace(value.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower();
    }
}
Run Code Online (Sandbox Code Playgroud)

启动.cs

services.AddControllersWithViews(options …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core-mvc asp.net-core

5
推荐指数
1
解决办法
2006
查看次数