Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 2.0中的Url重写_C#_Asp.net Mvc_Asp.net Core Mvc_Asp.net Core 2.0 - Fatal编程技术网

C# asp.net core 2.0中的Url重写

C# asp.net core 2.0中的Url重写,c#,asp.net-mvc,asp.net-core-mvc,asp.net-core-2.0,C#,Asp.net Mvc,Asp.net Core Mvc,Asp.net Core 2.0,我想重写url http://localhost:56713/Home/UserDetails?Code=223322 与 我已经在StartUp.cs中写了以下内容,但它不起作用 var rewrite = new RewriteOptions() .AddRewrite(@"{$1}", "Home/UserDetails?Code={$1}",true); AddRewrite函数的第一个参数需要一个正则表达式 var rewrite = new RewriteOptions().

我想重写url

http://localhost:56713/Home/UserDetails?Code=223322

我已经在StartUp.cs中写了以下内容,但它不起作用

var rewrite = new RewriteOptions()
  .AddRewrite(@"{$1}", "Home/UserDetails?Code={$1}",true);

AddRewrite函数的第一个参数需要一个正则表达式

var rewrite = new RewriteOptions().AddRewrite(
     @"^Home/UserDetails?Code=(.*)",  // RegEx to match Route
     "Home/{$1}",                     // URL to rewrite route
     skipRemainingRules: true         // Should skip other rules
);
此链接可能有助于提供更多示例

添加规则以匹配
@“{$1}”
将不起作用。术语
$1
表示使用正则表达式解析的值。您还没有执行任何正则表达式,因此实际上是在告诉它“只要URL为
null
,就重写我的URL”。显然,这不太可能

要使用以下正则表达式匹配传入URL:

@"^Home/UserDetails?Code=(\d+)"
(\d+)
告诉RegEx匹配“一个或多个数字”,并将其存储为变量。由于这是参数中包含的唯一变量,因此该值存储在
$1

然后,您希望使用使用该正则表达式解析的值重写URL:

"Home/$1"
将这两个字符串传递到
AddRewrite
方法:

AddRewrite(
    @"^Home/UserDetails?Code=(\d+)", // RegEx to match URL
    "Home/$1", // URL to rewrite
    true // Stop processing any aditional rules
);

谢谢。当查询字符串类似于“(abc)-xyz@123”时,正则表达式是什么
AddRewrite(
    @"^Home/UserDetails?Code=(\d+)", // RegEx to match URL
    "Home/$1", // URL to rewrite
    true // Stop processing any aditional rules
);