C# layout.cshtml的自定义控制器

C# layout.cshtml的自定义控制器,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我有一个MVC网站,我想实现全球化/本地化。在我的\u Layout.cshtml上,我有一个下拉列表,其中有我支持的语言。当用户在该下拉列表中选择一种语言时,它应自动发布到服务器,然后呈现新语言 我是否可以仅为\u Layout.cshtml创建特定的自定义控制器?如果是,如何进行?如果没有,我有什么可能的方法吗 提前谢谢 您应该将其移动到子操作,然后从布局视图调用子操作 您可以将表单发布到单独的操作(在与子操作共享的控制器中),该操作设置cookie/session/DB属性,然后重定向回原

我有一个MVC网站,我想实现全球化/本地化。在我的
\u Layout.cshtml
上,我有一个下拉列表,其中有我支持的语言。当用户在该下拉列表中选择一种语言时,它应自动发布到服务器,然后呈现新语言

我是否可以仅为
\u Layout.cshtml
创建特定的自定义控制器?如果是,如何进行?如果没有,我有什么可能的方法吗


提前谢谢

您应该将其移动到子操作,然后从布局视图调用子操作


您可以将表单发布到单独的操作(在与子操作共享的控制器中),该操作设置cookie/session/DB属性,然后重定向回原始URL(通过
Request.urlReferer
或从隐藏的模型绑定字段)。

我可以将子操作放置到任何控制器吗?@Gerald:当然可以。但由于它与POST操作相关,最好将它们放在一起。Request.urlReferer这不是100%正确的方法,因为有许多方法可以通过安全软件/防病毒软件、防火墙、代理程序阻止urlReferer。UrlReferer将在弹出窗口中为空。@PKKG:Yes;这就是为什么我给了第二个选择。在这里,它会稍微可靠一些,因为它总是以
帖子的形式出现在您自己的页面上。@PKKG:这将给出当前(POST)操作;不是原始URL的操作。您需要
@Html.Hidden(“SourceUrl”,Request.Url)