Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC4多控制器_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# MVC4多控制器

C# MVC4多控制器,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,这是一个非常基本的问题,但我找不到任何清晰、简单、直接的答案 我有一个基本的MVC4应用程序,其中有一个HomeController.cs文件。我想创建第二个Controller.cs文件,将更多代码放入其中,这样HomeController就不会变成意大利面代码 显然,第一步是添加一个新的控制器。我假设下一步是向RouteConfig.cs添加一些内容 我需要向RouteConfig.cs添加什么才能使用新的Controller.cs?您不需要添加任何内容。HomeController要求将R

这是一个非常基本的问题,但我找不到任何清晰、简单、直接的答案

我有一个基本的MVC4应用程序,其中有一个HomeController.cs文件。我想创建第二个Controller.cs文件,将更多代码放入其中,这样HomeController就不会变成意大利面代码

显然,第一步是添加一个新的控制器。我假设下一步是向RouteConfig.cs添加一些内容


我需要向RouteConfig.cs添加什么才能使用新的Controller.cs?

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


只需创建一个控制器,添加一些操作,您就可以使用format controller/Action或使用routing helper函数路由到它。

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


只需创建一个控制器,添加一些操作,您就可以使用format controller/Action或使用routing helper功能路由到它。

路由文件是什么样子的

通常,有一个默认路线:

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

这意味着,只要您添加一个带有控制器后缀的新控制器,MVC就会确保路由引擎看到您的控制器,并且只要您的URL遵循上述结构,以该格式发出的请求就会被路由到相应的控制器。

您的路由文件是什么样子的

通常,有一个默认路线:

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

这意味着,只要您添加一个带有控制器后缀的新控制器,MVC就会确保路由引擎看到您的控制器,并且只要您的URL遵循上述结构,以该格式发出的请求将被路由到相应的控制器。

我们通常将其发送到不同的视图,该视图将提交给不同的控制器,或者,如果您只想调用当前主控制器中的某些方法,请在当前控制器中添加引用。

我们通常将其发送到另一个视图,该视图将提交给不同的控制器,或者,如果您只想调用当前主控制器中的某些方法,请在当前控制器中添加引用。

创建新控制器后,您真正需要的是在未自动添加的情况下添加新操作,然后为新操作添加新视图。
仅当您将要处理与默认设置不匹配的某些特定参数时,才需要触摸路线。创建新控制器后,您真正需要的是,如果未自动添加新动作,则首先添加新动作,然后为新动作添加新视图。
只有当您将要处理一些与默认设置不匹配的特定参数时,才需要触摸路由

将代码拆分为两个文件不会解决意大利面代码问题。。。如果有的话,那会让事情变得更糟。为什么不使用合适的面向对象技术呢?我不认为他真的想把HomeController分成多个部分。我认为他只是想将操作分解为不同的逻辑控制器,而不是将不相关的操作都放在一个文件中。如果您计划保留模式controller/action/id,则无需更改RouteConfig.cs。有关路由的更多信息:定义更多代码?您是否应该构建另一层?如果您想在物理上将内容保存在不同的文件中,可以使用部分类将代码拆分为两个文件,但这并不能解决意大利面代码问题。。。如果有的话,那会让事情变得更糟。为什么不使用合适的面向对象技术呢?我不认为他真的想把HomeController分成多个部分。我认为他只是想将操作分解为不同的逻辑控制器,而不是将不相关的操作都放在一个文件中。如果您计划保留模式controller/action/id,则无需更改RouteConfig.cs。有关路由的更多信息:定义更多代码?您是否应该构建另一个层?如果您想在物理上保留不同文件中的内容,可以使用分部类