0

我是 MVC 3 的新手,所以此时我正在尝试创建一个网站,其中有一个语言选择器,我可以更改网站上的语言。

我有一个用于语言选择器的 JQuery + html。

但现在我想知道如何将它与 MVC 3 集成?

这是它的html:

<div id="polyglotLanguageSwitcher">
    <form action="#">
        <select id="polyglot-language-options">
            <option id="en" value="en" selected>English</option>
            <option id="fr" value="fr">Français</option>
        </select>
    </form>
</div>

这是在部分模板中,用于 _Layout 页面

这是javascript:

$(document).ready(function () {
            $('#polyglotLanguageSwitcher').polyglotLanguageSwitcher({
                effect: 'fade',
                testMode: true,
                onChange: function (evt) {
                    alert("The selected language is: " + evt.selectedItem);
                }

现在,如果我想让它工作,我可以用 javascript 调用服务器代码并让网站的语言发生变化,但是我必须在每个控制器中实现它,这个方法才能调用对吗?

一般我该怎么做?这样我就可以只在某个地方定义这个方法一次并且可以一直调用它,而不是在不同的控制器上编写或调用它?

我正在考虑将这个 _partial 模板作为 html.helper,这是一个好的决定吗?如果是这样,我怎么能做到?

谢谢

要更改语言,我基本上使用路由路径(/lang/action/id)和 cookie 来存储用户选择的语言。

4

1 回答 1

0

一种方法是设计一个基本控制器并在那里进行选定的语言管理。这样,您从基本控制器派生的任何控制器都可以访问该功能;

以下是基于 cookie 填充 ActiveLanguage 的基本控制器的简单实现。

public class BaseController : Controller
{
    public string ActiveLanguage { get; set; } 

    public BaseController()
    {
        if (HttpContext.Request != null && HttpContext.Request.Cookies != null)
        {
            // copy value from the correct cookie to variable
            var languageCookie = HttpContext.Request.Cookies.Get("name_of_the_cookie");

            ActiveLanguage = languageCookie != null ? languageCookie.Value : string.Empty;
        }
    }
}

现在任何从 BaseController 派生的控制器都会有一个属性ActiveLanguage,它将描述所选语言

于 2013-06-17T03:03:56.743 回答