具有不同签名的控制器操作方法
我正在尝试获取 files/id 格式的网址。我猜我的控制器中应该有两种 Index 方法,一种带有参数,另一种不带参数。但我在下面的浏览器中收到此错误消息。
无论如何,这是我的控制器方法:
public ActionResult Index()
{
return Content("Index ");
}
public ActionResult Index(int id)
{
File file = fileRepository.GetFile(id);
if (file == null) return Content("Not Found");
else return Content(file.FileID.ToString());
}
更新:添加路线完成。感谢杰夫
I am trying to get my URLs in files/id format. I am guessing I should have two Index methods in my controller, one with a parameter and one with not. But I get this error message in browser below.
Anyway here is my controller methods:
public ActionResult Index()
{
return Content("Index ");
}
public ActionResult Index(int id)
{
File file = fileRepository.GetFile(id);
if (file == null) return Content("Not Found");
else return Content(file.FileID.ToString());
}
Update: Done with adding a route. Thanks to Jeff
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果参数不同,您只能重载操作在动词中,不仅仅是论证。在您的情况下,您需要一个带有可为空 ID 参数的操作,如下所示:
您还应该阅读 Phil Haack 的 方法如何成为操作。
You can only overload Actions if they differ in arguments and in Verb, not just arguments. In your case you'll want to have one action with a nullable ID parameter like so:
You should also read Phil Haack's How a Method Becomes an Action.
要使用 files/id URL 格式,请删除无参数
Index
重载,并首先添加此自定义路由,以便在默认路由之前对其进行评估:请参阅 ASP.NET MVC 路由概述 了解将 URL 映射到控制器方法的基础知识和 ScottGu 的优秀 URL 路由 文章,其中有几个与您想要执行的操作非常接近的示例。
To use the files/id URL format, remove the parameterless
Index
overload, and add this custom route first so it's evaluated before the default route:See ASP.NET MVC Routing Overview for the basics of mapping URLs to controller methods and ScottGu's excellent URL Routing article, which has several examples very close to what you want to do.