我很确定我只是错过了一些明显的东西,但这就是发生的事情。
我在RouteConfig.cs文件中添加了一个自定义路由,如下所示:
routes.MapRoute(
name: "LibraryCategoryList",
url: "Library/List/{id}",
defaults: new { controller = "Library", action = "List", id = "Marketing" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "BFRDP.Controllers" }
);
我有一个名为Library的控制器,带有一个动作List,如下所示:
public ActionResult List(string id)
{
return View(id);
}
我的列表视图位于〜/ Views / Library / List.cshtml。
当我尝试转到http://localhost:49591/Library/List/Marketing时,我收到错误:
未找到“营销”视图或其主视图或视图引擎不支持搜索的位置。搜索了以下位置:〜/ Views / Library / Marketing.aspx~ / Views / Library / Marketing.ascx~ / Views / Shared / Marketing.aspx~ / Views / Shared / Marketing.ascx~ / Views / Library / Marketing。 cshtml~ / Views / Library / Marketing.vbhtml~ / Views / Shared / Marketing.cshtml~ / Views / Shared / Marketing.vbhtml
(是的,我确实有RouteConfig.RegisterRoutes(RouteTable.Routes);在我的global.asax.cs文件的Application_Start方法中。)
世界上我做错了什么?
谢谢!
劳里
答案 0 :(得分:2)
框架将url与定义的第一个路径匹配,即LibraryCategoryList。根据这条路线,id参数等于" Marketing"。因此,在您的action方法中,return语句变为等效于:
return ("Marketing");
采用这种格式"营销"成为要返回的视图的名称。框架将在Library文件夹中查找具有此名称(Marketing.cshtml)的视图,而不是在视图下的共享文件夹中查找。如果找不到,则会给出错误。因此,要么在Library文件夹下定义Marketing视图,要么返回另一个视图或将代码更改为:
return ("List");