用于在属性路由正则表达式约束中验证未加引号的字母数字csv列表的正则表达式



我正在寻找一个RegEx模式来验证属性路由与URL中的CSV参数。

一个有效的URL应该是这样的(一个包含0到n个元素的列表):

http://site/prefix/list/a,b1,c123[,...]

属性路由:

Route("List/{Items:alpha:regex(<pattern>)")

我没有太多的RegEx经验,也没有太多的运气与模式。

我认为在操作中验证参数是更好的方法,而不是通过属性路由规则,因为路由规则不是有用的验证器,当用户输入与之不匹配的数据时,它不会给用户任何反馈,而是会得到HTTP 404。但如果这确实是你想要的,这里有一个适合我的例子:

http://localhost/list/movie1,movie 2,movie 3检验

    [Route(@"list/{movieCsv:regex(^[A-Za-z0-9, ]+$)}")]
    public ActionResult ListCsv(string movieCsv)
    {
       var movies = movieCsv.Split(',');
       return View(movies);
    }

View (ListCsv.cshtml):

   <h2>Movies</h2>
   <ul>
   @foreach (var movie in Model)
   {
     <li>@movie</li>
   }
   </ul>

最新更新