在 C# 中更改指向下拉列表的链接
本文关键字:下拉列表 链接 | 更新日期: 2023-09-27 17:55:43
我看了这个 https://www.youtube.com/watch?v=oGeAYd3idBc,我能够创建一个多语言应用程序,但我需要帮助。我正在尝试创建一个带有法语和英语文本的下拉框,而不是我现在视图中的两个列表项链接。有谁知道如何做到这一点?这是我的控制器
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>
下面是控制器和模型:
public class LanguageModel
{
public List<SelectListItem> LanguageList { get; set; }
public string LanguageAbbrevation { get; set; }
public static List<SelectListItem> GetList()
{
List<SelectListItem> list = new List<SelectListItem>
{
new SelectListItem { Text = "English", Value = "en" },
new SelectListItem { Text = "French", Value = "fr" },
};
return list;
}
}
public class HomeController : Controller
{
public ActionResult AAIndex()
{
LanguageModel securityQuestionModel = new LanguageModel();
securityQuestionModel.LanguageList = LanguageModel.GetList();
return View("AAIndex", securityQuestionModel);
}
[HttpPost]
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("AAIndex");
}
以下是视图:
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@model Testy2.Controllers.LanguageModel
@using (Html.BeginForm("Change", "Home"))
{
<ul>
<li>@Html.ActionLink("English", "Change", "Home", new { LanguageAbbrevation = "en" }, null)</li>
<li>@Html.ActionLink("French", "Change", "Home", new { LanguageAbbrevation = "fr" }, null)</li>
<li>@DateTime.Now.ToString()</li>
</ul>
<div class="form-group">
<label>Language Dropdown</label>
@Html.DropDownListFor(m => m.LanguageAbbrevation, new SelectList(Model.LanguageList, "Value", "Text",
"English"),
new { @class = "form-control", onchange = "this.form.submit();" })
</div>
}