0

私は音楽ストアのチュートリアルで 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

しかし、URLhttp://localhost:53867/store/details/5を入力すると、次のサーバーエラーが発生します

パラメーター ディクショナリには、'MvcMusicStore.MvcMusicStore.StoreController' のメソッド 'System.String Details(Int32)' の null 非許容型 'System.Int32' のパラメーター 'i' の null エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。パラメータ名: パラメータ

上記のデフォルト ID パラメーターの Galloway の説明に基づいて、このメソッドは URL の末尾にある 5 を (デフォルト) パラメーターとして使用すると予想されます。nullが出てくるのはなぜですか?私は何が欠けていますか?

4

3 に答える 3

1

あなたのコードで私が気づいているいくつかのことを確認してください。

  1. 関数本体では、i.ToString を呼び出していますが、パラメーターとして id を渡しています。
  2. VB は、関数のパラメーターに ByVal の序文を必要としませんか?
  3. これはあなたのプロジェクトからのコピー/貼り付けですか、それともあなたが入力したものですか? デフォルト ルートにある ID に 5 が割り当てられているように聞こえますが、ルートの一部ではなく、クエリ文字列パラメーターとして渡していないため、i をパラメーターとして使用しているように見えますが、これは null です。
于 2012-08-08T18:02:01.107 に答える
0

エラーは、変数名のつづりが間違っているだけで、idの代わりにiを入れたことです

Function Details(ByVal id As Integer) As String
      Return "Store Details, ID= " & id.ToString()
End Function
于 2014-09-15T09:35:06.403 に答える
0

VB はわかりませんが、(とりわけ) C# を使用しています。

あなたのエラーに関する限り、VB がルートをどのように変換しているのか疑問に思っています。あなたが持っているリンクには、「ストアの詳細」を取得する前に、「/Store/Browse?genre=Disco」の例があります。それはあなたのアプリで機能しましたか?

私は間違っている可能性がありますが、このリンクはルーティングの問題、特にリスト 4 (null 許容パラメーターを使用したインデックス アクション)に役立つようです。

その要旨は…

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

...あなた、または少なくともそのようなもののために働くかもしれません。

于 2012-08-08T18:09:08.183 に答える