在 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>

在 C# 中更改指向下拉列表的链接

下面是控制器和模型:

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>
}