MVC 4路由到控制器

问题描述:

我是新来的MVC,我试图通过创建一个练习网站,这将是一个图库网站,查看和上传图像。我遇到的问题是我无法使路由正常工作。MVC 4路由到控制器

以下是我的路由代码和解决方案树的链接: https://imgur.com/a/Oc1Tt

我是否错误地设置了视图和控制器?

我得到的错误是:未找到'索引'或其主人的视图或没有视图引擎支持搜索的位置。以下位置进行检索:

感谢任何输入

+0

将HomeView.cshtml重命名为Index.cshtml – Jaybird

+0

代码必须在问题中 - 而不是链接到它的图像。 –

+0

1)最好给动作方法和相应的视图命名。所以你只需要'返回View()'。 2)在每个控制器和视图中都有一个默认的'Index'操作也很有用。 3)不需要将'View'附加到'cshtml'文件。 4)阅读更多关于MVC约定。 – adiga

路由功能可将传入请求转换为路由值或通过使用路线值以产生一个URL。路由值可以作为URL本身中的参数设置为默认值,或者两者都设置(默认值使URL参数可选)。

您尚未在路线中设置任何路线值。由于您在URL中没有路由参数,因此您需要设置默认值(MVC需要控制器和操作)。

routes.MapRoute(
    name: "Gallery", 
    url: "Gallery/Index", 
    defaults: new { controller = "Gallery", action = "Index" } 
); 

也就是说,您的Default路由已经覆盖此URL。如果您希望Default路线未涵盖的行为,则只需添加自定义路线。另外,如果您更改视图名称以使其与操作方法的名称不匹配,则必须从操作方法明确指定名称。

public ActionResult Index() 
{ 
    return View("~/Views/Gallery/GalleryView.cshtml"); 
} 

默认情况下,MVC使用约定。只需将视图Index.cshtml而不是GalleryView.cshtml命名为视图就简单多了,因此您可以仅从操作方法返回View

public ActionResult Index() 
{ 
    return View(); 
}