Asp.net MVC5中回访的持续下拉列表选择

Asp.net MVC5中回访的持续下拉列表选择,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我读过几十篇关于持久化DropDownList的选定值的文章和解决方案。这些文章似乎没有一篇能完全满足我的需要。以下是我的要求: 我在_Layout.cshtml站点范围的页面标题中有一个DropDownList,允许用户选择所需的语言 <form> <select id="lang"> <option value="en-US" selected="selected">English</option> &l

我读过几十篇关于持久化DropDownList的选定值的文章和解决方案。这些文章似乎没有一篇能完全满足我的需要。以下是我的要求:

我在_Layout.cshtml站点范围的页面标题中有一个DropDownList,允许用户选择所需的语言

<form>
    <select id="lang">
        <option value="en-US" selected="selected">English</option>
        <option value="fr-CA">Fran&#231;ais</option>
        <option value="pt-BR">Portugu&#234;s</option>
        <option value="es-MX">Espa&#241;ol</option>
    </select>
</form>
我打算使用Westwind.Globalization包NuGet执行本地化

默认情况下,设置应为英语,但当用户从“语言”下拉列表中进行选择时,我希望将其选择保留到cookie中,该cookie不仅用于当前会话,还用于回访

如果用户经过身份验证,我还希望将他们的选择保存在他们的用户配置文件中,我已经为其添加了一列


为当前会话、回访保留值的最佳做法是什么?如果更改了所需的语言并对其进行了身份验证,则保存到用户配置文件中的最佳做法是什么?

如果您网站的用户是匿名的,则可以使用cookie存储语言首选项


如果您网站的用户不是匿名的,那么除了cookie之外,您还可以存储用户的语言首选项以及该用户的数据库记录


除了饼干之外,我说的原因如下。假设一个用户在你的网站上已经有了一个帐户,并且经常使用它。他们访问了您的网站,但尚未登录。在用户登录之前,应该从cookie中提取语言首选项,以便登录页面、登录页面等使用用户的语言。用户登录后,使用从数据库中检索到的用户语言首选项更新cookie。

老实说,听起来您已经解决了所有问题。如果可能的话,把它保存到数据库中,但是如果用户是匿名的,就把它扔到cookie中。我想我知道需要做什么,只是不知道如何在控制器中以类似代码的方式完成它?jQuery出现了吗?甚至在何处/如何编写/读取cookie。我只是不确定在何处或如何编写此逻辑。所有用户在登录之前都是匿名的,所以cookie在他们回访时很重要,这样他们就可以看到他们首选语言的登录屏幕。该站点是仅登录的站点。它不适用于一般公众。@rwkiii在web应用程序的身份验证处理程序中,您必须为每个请求确定用户是谁,或者用户是否尚未经过身份验证。这也是确定用户语言偏好的好地方。如果用户成功验证了请求,只需从数据库中查找用户的语言首选项。如果用户无法进行身份验证,请从请求中的cookie中读取语言首选项。