0

私は助けが必要です。現在表示されている 2 つのリンクとは対照的に、フランス語と英語のテキストを含むドロップダウン ボックスを作成しようとしています。私はMVCで作業しており、ユーザーの言語選択に基づいて自動送信するドロップダウンボックスが必要です(送信ボタンの追加ステップはありません)が、選択に基づいて投稿するだけです。選択タグとオプションタグ、およびいくつかのJavaScriptを使用してそれを行う方法はおそらくいくつかありますが、その方法はわかりません. 誰もこれを行う方法を知っていますか?

これが私のコントローラーです

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Mvc;

 namespace MultiLanguage.Controllers
{
public class LanguageController : Controller
{
    // GET: Language
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Change(String LanguageAbbrevation)
    {
        if(LanguageAbbrevation !=null)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(LanguageAbbrevation);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(LanguageAbbrevation);
        }
        HttpCookie cookie = new HttpCookie("Language");
        cookie.Value = LanguageAbbrevation;
        Response.Cookies.Add(cookie);

        return View("Index");
    }
}

}

これが私の見解です

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<ul>
<li>@Html.ActionLink("English","Change","Language",new {LanguageAbbrevation = "en"}, null)</li>
<li>@Html.ActionLink("French", "Change", "Language", new { LanguageAbbrevation = "fr" }, null)</li>
<li>@DateTime.Now.ToString()</li>
</ul>
4

1 に答える 1

0
  1. コントローラー内
public ActionResult Change(string languageAbbrevation)
        {
            if (languageAbbrevation != null)
            {
                Thread.CurrentThread.CurrentCulture = new CultureInfo(languageAbbrevation);
                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageAbbrevation);

            }

            HttpCookie cookie = new HttpCookie("言語");
            cookie.Value = languageAbbrevation;
            Response.Cookies.Add(クッキー);
            Response.Redirect("インデックス");
            return View("インデックス");
        }

2.グローバルで

        protected void Application_BeginRequest(オブジェクト送信者, EventArgs e)
        {
            HttpCookie Cookie = HttpContext.Current.Request.Cookies["言語"];
            if (クッキー != null && cookie.Value != null)
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = 新しい System.Globalization.CultureInfo(cookie.Value);
                System.Threading.Thread.CurrentThread.CurrentUICulture = 新しい System.Globalization.CultureInfo(cookie.Value);
            }
            そうしないと
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt");
                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("pt");
            }
        }

3.HTMLで

                    <div class="dropdown pull-right">
                        <button class="btn btn-link dropdown-toggle" type="button" data-toggle="dropdown">
                            @Html.Label(Project.Resources.HomeTexts.Language)
                            <span class="caret"></span>
                        </button>
                        <ul class="dropdown-menu">
                            <li>@Html.ActionLink("English", "Change", new { languageAbbrevation = "en" }, null)</li>
                            <li>@Html.ActionLink("Portugues", "Change", new { languageAbbrevation = "pt" }, null)</li>
                        </ul>
                    </div>

4.リソースファイルの作成 HomeTexts.en.resx HomeTexts.resx -pt default

5.次に、ラベルを使用 @Html.Label(Project.Resources.HomeTexts.Login)

于 2016-09-17T20:02:41.443 に答える