【发布时间】:2012-04-03 06:45:07
【问题描述】:
我一直在研究 mvc3 应用程序并尝试对其进行本地化。我遇到了this 非常好的网站,它让我使用了通过 cookie 识别用户选择的语言的逻辑。它的作用是:
用户点击语言的超链接
点击的设置保存在cookie中
页面已重新加载
在 BaseController 类中,ExecuteCore 方法被重载,此处读取 cookie 并设置 CurrentUICulture 和 CurrentCulture。
现在,这很好用。但是如果用户禁用了 cookie 怎么办? 所以我觉得这行不通。 然后我想使用一种解决方法。我尝试的是
我创建了一个 HiddenField
用户点击语言的超链接
点击的设置保存在cookie中
点击的设置也保存在HiddenField中
页面已重新加载
在 BaseController 类中,ExecuteCore 方法被重载,如果 cookie 值存在,则读取它并设置 CurrentUICulture 和 CurrentCulture。
如果没有找到 cookie,我会尝试从 Request 对象中读取隐藏的字段值。
但是我在 ExecuteCore 方法的 Request 对象中找不到隐藏字段。
所以我做错了什么? 请以某种方式建议我。我也不想用保存文化的路线。
【问题讨论】:
-
为什么不在选择时简单地检测 cookie 是否关闭,并提醒用户 cookie 是语言选择所必需的,就像其他大型网站为区域所做的那样(前任 ups)
-
是的,它可能,但不是每个人都会喜欢该消息并想要打开 cookie。
-
然后假设您也没有将其包含在 url 中(您可以使用智能路由),他们就会失去此功能。你想取悦多少人 - 绝大多数人都会有 cookie 所以要遵守约定 - url /en-us/something 或 cookie。
标签: asp.net asp.net-mvc-3 razor localization controller