2012-08-08 96 views
0

我正在學習與音樂商店教程的ASP.net MVC 3 - 但將C#翻譯成VB。 http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-2mvc 3音樂商店教程:

喬恩·加洛韋說:「ASP.NET MVC的默認路由公約是操作方法的名字作爲命名參數後治療URL的段‘ID’。

我在StoreController下面的代碼

Function Details(id As Integer) As String 
     Return "Store Details, ID= " & i.ToString 
    End Function 

但是,當我把在url http://localhost:53867/store/details/5我得到以下服務器錯誤

參數字典包含NUL在'MvcMusicStore.MvcMusicStore.StoreController'中的方法'System.String Details(Int32)'的 不可空類型'System.Int32'的參數'i'的條目。一個 可選參數必須是一個引用類型,一個可爲空的類型,或者是作爲可選參數聲明的 。參數名稱:參數

根據Galloway對上述默認ID參數的描述,我期望此方法將URL末尾的5作爲(默認)參數。爲什麼它出現空?我錯過了什麼?

回答

1

我注意到了一些你可能想要檢查的代碼。

  1. 在函數體內,你在呼喚i.ToString,但ID爲傳遞參數
  2. 不VB需要顯示ByVal序言的功能參數?
  3. 這是從您的項目中複製/粘貼的,還是您輸入的?這聽起來像5被分配給默認路由中的ID,但您似乎將i用作參數,它是空的,因爲它不是路由的一部分,並且您沒有將它作爲查詢字符串參數傳遞
+0

這是一個愚蠢的錯誤,我代替。我有參數名稱作爲我而不是id,但當它不工作時將其更改爲id。然後我運行該應用程序,但它沒有重建,因爲您在#1中指出了錯誤。所以它看起來應用程序即使在var被命名爲id時也會生成錯誤。實際上,我正在運行一個構建,其中var被命名爲i,所以它仍然不起作用。無論如何,感謝您的幫助。 – bernie2436 2012-08-08 19:14:20

+0

@ akh2103 - 我們都在那裏,沒有汗水。很高興你得到它的工作 – Tommy 2012-08-08 19:22:47

0

我不知道VB,但我確實使用(除其他之外)C#。

就你的錯誤而言,我想知道VB如何轉換路線?在您擁有的鏈接中,在獲取「商店詳情」之前,有一個「/ Store/Browse?genre = Disco」的例子。在你的應用程序中工作?

我可能是錯的,但它看起來像這個link將有助於路由問題,特別是清單4 (帶空參數的索引操作)

的那個要點是......

Function Details(ByVal id? As Integer) As String 
    Return "Store Details, ID= " & i.ToString 
End Function 

...可能爲你工作,或者至少類似的東西。

+0

VB處理路由相同的C#。您看到的示例是因爲開箱即用,沒有處理流派參數的路由,因此它將成爲查詢字符串值。 – Tommy 2012-08-08 18:13:58

0

的錯誤是,你把ID,只是一個拼寫錯誤的變量名

Function Details(ByVal id As Integer) As String 
     Return "Store Details, ID= " & id.ToString() 
End Function