【问题标题】:Custom controller for the layout.cshtmllayout.cshtml 的自定义控制器
【发布时间】:2013-09-01 01:38:37
【问题描述】:

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

我是否可以仅为_Layout.cshtml 创建一个特定的自定义控制器?如果是,如何?如果没有,我可以采取任何可能的方式或方法吗?

提前致谢!

【问题讨论】:

    标签: c# asp.net-mvc model-view-controller


    【解决方案1】:

    您应该将其移至子操作,然后从布局视图中调用子操作。

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

    【讨论】:

    • 我可以把子动作放到任何控制器上吗?
    • @Gerald:当然。但由于它与 POST 操作相关联,因此将它们放在一起会更好。
    • Request.UrlReferrer 这不是 100% 正确的方式,因为安全软件/防病毒、防火墙、代理程序可以通过多种方式阻止 URLReferrer。弹出窗口中的 URLReferrer 将为空。
    • @PKKG:是的;这就是为什么我给了第二个选项。在这里,它会稍微可靠一些,因为它总是来自您自己的页面的<form> POST。
    • @PKKG:这将给出当前(POST)动作;不是原始 URL 的操作。你想要@Html.Hidden("SourceUrl", Request.Url)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多