我想验证 url 中的空 Id 值。
../Task/EditEmployee/afccb22a-7cfd-4be5-8f82-9bd353c13b16
如果 Id 为空,我想要那个
../任务/EditEmployee/
比将用户重定向到某个页面。
public ActionResult EditEmployee(Guid Id)
{
//Some code in here
}
我想验证 url 中的空 Id 值。
../Task/EditEmployee/afccb22a-7cfd-4be5-8f82-9bd353c13b16
如果 Id 为空,我想要那个
../任务/EditEmployee/
比将用户重定向到某个页面。
public ActionResult EditEmployee(Guid Id)
{
//Some code in here
}
它可能不是最好的解决方案,但您可以将 id 参数作为字符串并尝试像这样解析它:
public ActionResult EditEmployee(string id)
{
if(string.IsNullOrWhiteSpace(id))
{
// handle empty querystring
}
else
{
Guid guid;
if (Guid.TryParse(id, out guid))
{
//Some code in here
}
}
}
或者
您还可以在路由上创建正则表达式约束,但这可能太复杂且难以理解。在默认路由之前映射此路由。
routes.MapRoute(
"TastEditEmployee",
"Task/EditEmployee/{id}",
new { controller = "Task", action = "EditEmployee" },
new { id = @"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$" }
);
然后你可以使用 id 参数作为 Nullable Guid。
public ActionResult EditEmployee(Guid? id)
{
//do something
}
因为是一个结构体,所以如果它被省略,它Guid
的值Id
将会是。Guid.Empty
你可以检查一下。
public ActionResult EditEmployee(Guid Id)
{
if (Id == Guid.Empty) throw new ArgumentException("Id not specified.");
}