2013-09-25 45 views
1

这是一个非常基本的问题,但我找不到任何清晰,简单,直接的答案。MVC4多个控制器

我有1个HomeController.cs文件基本MVC4应用。我想创建第二个Controller.cs文件来放置更多的代码,所以HomeController不会变成意大利面代码。

所以很明显第1步是添加一个新的控制器。我假设下一步是添加一些东西到RouteConfig.cs。

什么我需要添加到RouteConfig.cs利用新Controller.cs?

+0

将代码拆分为两个文件不会解决意大利面条代码问题......如果有的话,它会变得更糟。为什么不使用适当的对象定位技术? – JDB

+1

我不认为他真的想将HomeController分成多个部分。我认为他只是想将行为分解成不同的逻辑控制器,而不是将不相关的行为集中在一个文件中。 –

+0

如果您打算保留模式(控制器/操作/ ID),则无需更改RouteConfig.cs。更多关于路线:http://www.asp.net/mvc/tutorials/controllers-and-routing –

回答

3

你的路线文件是什么样的?

通常情况下,有一个缺省路由

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

这意味着,只要你添加一个新的控制器与Controller后缀,MVC将确保路由引擎看到你的控制器,并且只要你的URL遵循上述结构,以这种格式发送的请求将被路由到适当的控制器。

5

你不应该添加任何东西。 HomeController需要将RouteConfig中的一行代码设置为默认控制器(用于当用户导航到站点根目录时),但其他控制器应该可以使用默认路由访问。

只需创建一个控制器,加一些动作,你应该能够路由到它的格式Controller/Action或使用路由辅助功能。

0

我们通常将其发送给它提交给不同的控制器不同的看法,或在你的电流控制器添加引用如果只是想打电话给在您目前的家庭控制器的某些方法。

0

你真正需要创建一个新的控制器后,首先是要增加一个新的动作(如果它没有自动添加),然后添加为新行动的新景观。 只有当您要处理某些与您的默认设置不匹配的特定参数时,您才需要触摸您的路线