一個空的查詢字符串參數我想,以驗證URL中的空Id值。如何驗證了在asp.net MVC3
../Task/EditEmployee/afccb22a-7cfd-4be5-8f82-9bd353c13b16
我想,如果標識爲空
../Task/EditEmployee/
比將用戶重定向到某個頁面。
public ActionResult EditEmployee(Guid Id)
{
//Some code in here
}
一個空的查詢字符串參數我想,以驗證URL中的空Id值。如何驗證了在asp.net MVC3
../Task/EditEmployee/afccb22a-7cfd-4be5-8f82-9bd353c13b16
我想,如果標識爲空
../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參數作爲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.");
}
這也將拋出一個異常,當ID不爲空,而不是GUID格式的值。 –
是的,我不認爲這是不可取無論是。 – HackedByChinese
非常感謝你,但這返回錯誤信息......我想它來驗證查詢字符串甚至到達其需要ID的代碼部分之前。我不知道如果我解釋得很好 –
非常感謝您的建議,我仍然非常新的mvc,並沒有做任何映射,因此不熟悉它。我用你的第一個建議,它完美的工作,謝謝你! –