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> 
+0

誰でもこれを行う方法は? – evan

答えて

0
 
public ActionResult Change(string languageAbbrevation) 
     { 
      if (languageAbbrevation != null) 
      { 
       Thread.CurrentThread.CurrentCulture = new CultureInfo(languageAbbrevation); 
       Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageAbbrevation); 

      } 

      HttpCookie cookie = new HttpCookie("Language"); 
      cookie.Value = languageAbbrevation; 
      Response.Cookies.Add(cookie); 
      Response.Redirect("Index"); 
      return View("Index"); 
     } 

2.Inグローバル

 

     protected void Application_BeginRequest(object sender, EventArgs e) 
     { 
      HttpCookie cookie = HttpContext.Current.Request.Cookies["Language"]; 
      if (cookie != null && cookie.Value != null) 
      { 
       System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value); 
       System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value); 
      } 
      else 
      { 
       System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt"); 
       System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("pt"); 
      } 
     } 

3.In 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.createリソースファイル HomeTexts.en.resx HomeTexts.resx -ptデフォルト

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

関連する問題