2

URLに空のID値があるかどうかを検証したいと思います。

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

IDが空の場合はそれが欲しい

../Task/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パラメーターをNullableGuidとして使用できます。

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 に答える