Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET CORE 3.1客户自定义Razor页面路由_C#_Asp.net_Asp.net Mvc_Razor_Asp.net Core Mvc - Fatal编程技术网

C# ASP.NET CORE 3.1客户自定义Razor页面路由

C# ASP.NET CORE 3.1客户自定义Razor页面路由,c#,asp.net,asp.net-mvc,razor,asp.net-core-mvc,C#,Asp.net,Asp.net Mvc,Razor,Asp.net Core Mvc,我有一个asp.net web表单,我正在转换为.net核心。该网站有许多用户管理系统中的多个客户。用户需要能够从多个浏览器选项卡管理客户。我的web旧应用程序只是简单地传递了参数CustomerId,我不得不跨多个页面管理CustomerId值,这是一件痛苦的事情。所有页面都必须使用查询?CustomerId=XXX 在ASP.net Core 3中,有没有简单的方法可以在路由和构造URL中实现这一点?我想添加一条如下所示的路线 这将路由到razor页面/Pages/SettingsPage.

我有一个asp.net web表单,我正在转换为.net核心。该网站有许多用户管理系统中的多个客户。用户需要能够从多个浏览器选项卡管理客户。我的web旧应用程序只是简单地传递了参数CustomerId,我不得不跨多个页面管理CustomerId值,这是一件痛苦的事情。所有页面都必须使用查询?CustomerId=XXX

在ASP.net Core 3中,有没有简单的方法可以在路由和构造URL中实现这一点?我想添加一条如下所示的路线

  • 这将路由到razor页面/Pages/SettingsPage.cshtml

  • 这将路由到带有razor页面/Areas/AdminArea/Users/Edit.cshtml的区域

  • 然后在我的代码中,我可以从路由中创建URL,获取XXX值并查询customer表。

    阅读本文后

    我在asp.net内核中使用了URL重写引擎。这里有一个示例项目

    using (StreamReader apacheModRewriteStreamReader =
                    File.OpenText("ApacheModRewrite.txt"))
                using (StreamReader iisUrlRewriteStreamReader =
                    File.OpenText("IISUrlRewrite.xml"))
                {
                    var options = new RewriteOptions()
                        .AddRedirect("redirect-rule/(.*)", "redirected/$1")
                        .AddRewrite(@"^rewrite-rule/(\d+)/(\d+)", "rewritten?var1=$1&var2=$2", skipRemainingRules: true)
                        .AddRewrite(@"customer(\d+)\/(.*)$", "$2?customerid=$1", skipRemainingRules: true)
                        .AddApacheModRewrite(apacheModRewriteStreamReader)
                        .AddIISUrlRewrite(iisUrlRewriteStreamReader)
                        .Add(RewriteRules.MethodRules.RedirectXmlFileRequests)
                        .Add(RewriteRules.MethodRules.RewriteTextFileRequests)
                        .Add(new RewriteRules.RedirectImageRequests(".png", "/png-images"))
                        .Add(new RewriteRules.RedirectImageRequests(".jpg", "/jpg-images"));
    
                    app.UseRewriter(options);
                }