2012-08-07 50 views
0

我的網址如下:爲什麼我的MVC ID返回Null(或Nothing)?

{控制器}/{行動}/{ID}

在這個例子中,它是:

博客/編輯/ 2

在我的代碼,我想獲得的ID參數(這是「2」),像這樣:

' get route 
Dim routeData = httpContext.Request.RequestContext.RouteData 
' get id 
Dim id = If(String.IsNullOrEmpty(routeData.Values("id") = False), routeData.Values("id").ToString, Nothing) 

然而,跟它的價值是空的。下面的語句由於某種原因,返回true:

If String.IsNullOrEmpty(id) = True Then 

我怎樣才能獲得ID的值,使之不爲NULL(或VB.NET「無」)?

+1

在你的代碼你在哪裏做? – Oded 2012-08-07 15:14:14

+0

這是發生在授權Atttribute如下所示http://stackoverflow.com/questions/11847262/stackoverflowexception-was-unhandled-in-customauthorize-authorizeattribute – user1477388 2012-08-07 15:16:05

回答

1

解決的辦法是改變我用的是IsNullorEmpty方法:

' get id 
    Dim id = If(String.IsNullOrEmpty(routeData.Values("id")), Nothing, routeData.Values("id").ToString) 

    ' if no id is set, check to see if the user owns the requested entity (company or blog) 
    If String.IsNullOrEmpty(id) Then 
1

它不返回任何。

你原來的職位讀取String.IsNullOrEmpty(routeData.Values("id") = False) - 你的右括號是放錯了地方,所以String.IsNullOrEmpty將總是返回FALSE。你應該寫String.IsNullOrEmpty(routeData.Values("id")) = False

(在VB中,"xyz" = false將隱式轉換爲"False"。)

+0

謝謝,丹。我正在使用我自己的解決方案,但您的解決方案也可能是正確的(可能更正確)。 – user1477388 2012-08-07 15:34:43

+0

你的新代碼更簡潔(不需要隱式的'= False'),但我想強調爲什麼你的原始代碼不合格。 – 2012-08-07 15:41:13