2

我想验证 url 中的空 Id 值。

../Task/EditEmployee/afccb22a-7cfd-4be5-8f82-9bd353c13b16

如果 Id 为空,我想要那个

../任务/EditEmployee/

比将用户重定向到某个页面。

public ActionResult EditEmployee(Guid Id)

{

//Some code in here

}
4

2 回答 2

2

它可能不是最好的解决方案,但您可以将 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
}
于 2012-06-15T10:06:19.967 回答
0

因为是一个结构体,所以如果它被省略,它Guid的值Id将会是。Guid.Empty你可以检查一下。

public ActionResult EditEmployee(Guid Id)
{
   if (Id == Guid.Empty) throw new ArgumentException("Id not specified.");
}
于 2012-06-15T10:08:48.773 回答