mvc 3音乐商店教程:

时间:2012-08-08 17:53:11

标签: asp.net-mvc asp.net-mvc-3

我正在使用音乐商店教程学习ASP.net MVC 3 - 但是将C#翻译成VB。 http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-2

Jon Galloway说“ASP.NET MVC的默认路由约定是将操作方法​​名称后面的URL段视为名为”ID“的参数。

我的StoreController中有以下代码

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

但是当我输入网址http://localhost:53867/store/details/5时,我收到以下服务器错误

  

参数字典包含参数“i”的空条目   方法'System.String的非可空类型'System.Int32'   详细信息(Int32)'在'MvcMusicStore.MvcMusicStore.StoreController'中。一个   可选参数必须是引用类型,可空类型或be   声明为可选参数。参数名称:参数

根据上面对默认ID参数的Galloway描述,我希望这种方法将URL末尾的5作为(默认)参数。为什么它会出现空?我错过了什么?

3 个答案:

答案 0 :(得分:1)

我在您的代码中注意到的一些您可能想要检查的内容。

  1. 在您的函数体中,您正在调用i.ToString,但是将id作为参数传递
  2. VB不需要函数参数的ByVal前言吗?
  3. 您的项目是复制/粘贴还是键入了?它听起来像是分配给默认路由中的ID,但是您似乎使用i作为参数,它是null,因为它不是路由的一部分而您没有将它作为查询字符串参数传递

答案 1 :(得分: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

......可能对你有用,或者至少对你有用。

答案 2 :(得分:0)

错误是你输入而不是 id ,只是一个拼写错误的变量名称

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