我想同时访问 /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(Int32) 类型上的 System.Web.Mvc.ViewResult Index()在 GemcoBlog.GemcoBlog.BlogController 类型上
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Reflection.AmbiguousMatchException:当前对控制器类型“BlogController”的操作“Index”的请求在以下操作方法之间不明确:System.Web.Mvc.ViewResult Index() 类型 GemcoBlog.GemcoBlog.BlogController System。类型 GemcoBlog.GemcoBlog.BlogController 上的 Web.Mvc.ViewResult Index(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)”的不可空类型“System.Int32”的参数“id”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArgumentException:参数字典包含“Blog.Blog”中方法“System.Web.Mvc.ViewResult Index(Int32)”的不可空类型“System.Int32”的参数“id”的空条目。博客控制器'。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。