如何使用另一个控制器的视图?

时间:2009-06-10 16:17:50

标签: asp.net-mvc

出于全球化的原因,我需要能够做到这一点:

 http://mysite/home
 http://mysite/Accueil

我尝试的是在我的Accueil类中继承home控件:

 Public Class AccueilController
     Inherits HomeController

 End Class

问题是,它正试图进入Accueil文件夹并在那里寻找index.aspx

The view 'Index' or its master could not be found. The following locations were searched:
~/Views/Accueil/Index.aspx
~/Views/Accueil/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx 

我希望它能够使用,所以我不必重复代码

~/Views/Home/Index.aspx

最简单的方法是什么?

3 个答案:

答案 0 :(得分:2)

您说由于全球化原因,您需要让两个网址呈现相同的视图。在这种情况下,我建议您使用路由引擎并将Accueil映射到home

routes.MapRoute(
    "accueil",
    "Accueil/{action}",
    new 
    { 
        controller = "Home", 
        action = "Index"
    }
);

答案 1 :(得分:0)

错误消息包含您的答案。视图引擎对通过一组已配置文件夹移动的匹配视图执行渐进式搜索。如果你想要一个共享索引视图,把Index.aspx文件放在〜/ Views / Shared /中,这应该可以解决问题。

如果您需要更灵活的视图位置,可以考虑实现自定义ViewLocator。

http://blogs.teamb.com/craigstuntz/2008/07/31/37827/

答案 2 :(得分:0)