/Blog と /Blog/1 の両方にアクセスしたいのですが、「1」はブログの ID です。これが私のコードです:
'
' GET: /Blog/
Function Index() As ViewResult
Return (View(db.Blogs.ToList()))
End Function
'
' GET: /Blog/(Integer)
Function Index(id As Integer) As ViewResult
Dim blog As Blog = db.Blogs.Find(id)
Return View("Details", "_MyLayout", blog)
End Function
エラーが発生します:
「/」アプリケーションでサーバー エラーが発生しました。
コントローラー タイプ 'BlogController' のアクション 'Index' に対する現在の要求は、次のアクション メソッド間であいまいです: タイプ GemcoBlog.GemcoBlog.BlogController の System.Web.Mvc.ViewResult Index() System.Web.Mvc.ViewResult Index(Int32)タイプ GemcoBlog.GemcoBlog.BlogController
説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.Reflection.AmbiguousMatchException: コントローラー タイプ 'BlogController' のアクション 'Index' に対する現在の要求は、次のアクション メソッド間であいまいです: タイプ GemcoBlog.GemcoBlog.BlogController システムの System.Web.Mvc.ViewResult Index()。タイプ GemcoBlog.GemcoBlog.BlogController の Web.Mvc.ViewResult インデックス (Int32)
ソース エラー:
現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。
Index() メソッドをオーバーロードするにはどうすればよいですか?
編集:
私はまた、それらを次のように組み合わせようとしています:
'
' GET: /Blog/
Function Index(id As Integer) As ViewResult
If (id) Then
Dim blog As Blog = db.Blogs.Find(id)
'Return View(blog)
Return View("Details", "_MyLayout", blog)
Else
Return (View(db.Blogs.ToList()))
End If
'Return View(db.Blogs.Where(Function(x) x.Name = "Test").ToList())
End Function
ただし、エラーは次のとおりです。
「/」アプリケーションでサーバー エラーが発生しました。
パラメーター ディクショナリには、'Blog.Blog.BlogController' のメソッド 'System.Web.Mvc.ViewResult Index(Int32)' の null 非許容型 'System.Int32' のパラメーター 'id' の null エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。パラメータ名: パラメータ
説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.ArgumentException: パラメーター ディクショナリには、'Blog.Blog.ブログコントローラー」。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。パラメータ名: パラメータ
ソース エラー:
現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。