我正在寻找一个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>