我一直在研究mvc3应用程序并尝试本地化。我来到了this非常好的网站,这让我使用了通过cookie识别用户语言选择的逻辑。它的作用是:
用户点击语言的超链接
点击的设置保存在Cookie中
重新加载页面
在BaseController类中,ExecuteCore方法被重载,此处读取cookie并设置CurrentUICulture和CurrentCulture。
现在,这很有效。但是,如果用户禁用了cookie,该怎么办? 所以我觉得这不行。 然后我尝试使用解决方法。我试过的是
我创建了一个HiddenField
用户点击语言的超链接
点击的设置保存在Cookie中
点击的设置也会保存在HiddenField
重新加载页面
在BaseController类中, ExecuteCore 方法被重载,如果存在cookie值,则读取它,并设置CurrentUICulture和CurrentCulture。
如果找不到cookie,我会尝试从Request对象中读取隐藏的字段值。
但我无法在 ExecuteCore 方法中的Request对象中找到隐藏字段。
我做错了什么? 我想以某种方式向我提出建议。另外,我不想使用保存文化的路线方式。
答案 0 :(得分:1)
隐藏字段值仅在您提交包含它们的表单时发送。如果您只点击某个超链接,浏览器会重定向到此链接指向的href,并且不会发送任何值,因此您不能期望在ExecureCore
方法中阅读它。所以,如果你希望这个工作,你必须将语言作为链接的查询字符串的一部分。
此外,我不想使用保存文化的路线方式。
如果您未将该值包含在网址(查询字符串或路由)中,并且禁用了Cookie,则文化值无法覆盖您的服务器。