Controller Action Methods with different signatures

╄→尐↘猪︶ㄣ 提交于 2019-12-05 14:25:58
R0MANARMY

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:

public ActionResult Index(int? id){ 
    if( id.HasValue ){
        File file = fileRepository.GetFile(id.Value);
        if (file == null) return Content("Not Found");
            return Content(file.FileID.ToString());

    } else {
        return Content("Index ");
    }
}

You should also read Phil Haack's How a Method Becomes an Action.

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:

routes.MapRoute(
        "Files",
        "Files/{id}",
        new { controller = "Files", action = "Index" }      
    );

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!