URLに空のID値があるかどうかを検証したいと思います。
../Task/EditEmployee/afccb22a-7cfd-4be5-8f82-9bd353c13b16
IDが空の場合はそれが欲しい
../Task/EditEmployee/
ユーザーを特定のページにリダイレクトするよりも。
public ActionResult EditEmployee(Guid Id)
{
//Some code in here
}
URLに空のID値があるかどうかを検証したいと思います。
../Task/EditEmployee/afccb22a-7cfd-4be5-8f82-9bd353c13b16
IDが空の場合はそれが欲しい
../Task/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パラメーターをNullableGuidとして使用できます。
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.");
}