我正在寻找一个正则表达式模式来验证 URL 中带有 CSV 参数的属性路由。
有效的 URL 如下所示(0 到 n 个元素的列表):
http://site/prefix/list/a,b1,c123[,...]
属性路由:
Route("List/{Items:alpha:regex(<pattern>)")
我在正则表达式方面没有太多经验,并且对该模式也没有太多运气。
最佳答案
我认为这是验证操作内参数的更好方法,而不是通过属性路由规则,因为路由规则不是一个有用的验证器,它不会给出任何当用户输入不匹配的数据时向用户提供反馈,相反,他们会收到 HTTP 404。但如果这确实是您想要的,这里有一个适合我的示例:
使用http://localhost/list/movie1,电影2,电影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>
关于用于验证属性路由正则表达式约束中不带引号的字母数字 csv 列表的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23662224/