2012-06-15 38 views
2

一個空的查詢字符串參數我想,以驗證URL中的空Id值。如何驗證了在asp.net MVC3

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

我想,如果標識爲空

../Task/EditEmployee/

比將用戶重定向到某個頁面。

public ActionResult EditEmployee(Guid Id) 

{ 

//Some code in here 

} 

回答

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 
} 
+0

非常感謝您的建議,我仍然非常新的mvc,並沒有做任何映射,因此不熟悉它。我用你的第一個建議,它完美的工作,謝謝你! –

0

由於Guid是一個結構,的Id值將是Guid.Empty如果它被刪去。你可以檢查。

public ActionResult EditEmployee(Guid Id) 
{ 
    if (Id == Guid.Empty) throw new ArgumentException("Id not specified."); 
} 
+1

這也將拋出一個異常,當ID不爲空,而不是GUID格式的值。 –

+0

是的,我不認爲這是不可取無論是。 – HackedByChinese

+0

非常感謝你,但這返回錯誤信息......我想它來驗證查詢字符串甚至到達其需要ID的代碼部分之前。我不知道如果我解釋得很好 –