如果在mvc3本地化和cookie被禁用,该怎么办?

时间:2012-03-18 14:17:53

标签: asp.net asp.net-mvc-3 razor localization controller

我一直在研究mvc3应用程序并尝试本地化。我来到了this非常好的网站,这让我使用了通过cookie识别用户语言选择的逻辑。它的作用是:

  1. 用户点击语言的超链接

  2. 点击的设置保存在Cookie中

  3. 重新加载页面

  4. 在BaseController类中,ExecuteCore方法被重载,此处读取cookie并设置CurrentUICulture和CurrentCulture。

  5. 现在,这很有效。但是,如果用户禁用了cookie,该怎么办? 所以我觉得这不行。 然后我尝试使用解决方法。我试过的是

    1. 我创建了一个HiddenField

    2. 用户点击语言的超链接

    3. 点击的设置保存在Cookie中

    4. 点击的设置也会保存在HiddenField

    5. 重新加载页面

    6. 在BaseController类中, ExecuteCore 方法被重载,如果存在cookie值,则读取它,并设置CurrentUICulture和CurrentCulture。

    7. 如果找不到cookie,我会尝试从Request对象中读取隐藏的字段值。

    8. 但我无法在 ExecuteCore 方法中的Request对象中找到隐藏字段。

      我做错了什么? 我想以某种方式向我提出建议。另外,我不想使用保存文化的路线方式。

1 个答案:

答案 0 :(得分:1)

隐藏字段值仅在您提交包含它们的表单时发送。如果您只点击某个超链接,浏览器会重定向到此链接指向的href,并且不会发送任何值,因此您不能期望在ExecureCore方法中阅读它。所以,如果你希望这个工作,你必须将语言作为链接的查询字符串的一部分。

  

此外,我不想使用保存文化的路线方式。

如果您未将该值包含在网址(查询字符串或路由)中,并且禁用了Cookie,则文化值无法覆盖您的服务器。