You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多语言切换ActionLink组转换为DropdownList下拉列表(仅修改cshtml端)

实现方案

你不需要修改任何后端代码,仅需将cshtml中的原有循环替换为下拉框+跳转逻辑即可,以下是两种可用实现:


方案1:使用MVC内置Html辅助方法实现

@{
    // 构造下拉框选项集合,值直接存对应语言的切换地址
    var languageSelectList = MvcMultilingual.SiteLanguages.AvailableLanguages
        .Select(lang => new SelectListItem
        {
            Text = lang.LangFullName,
            Value = Url.Action("ChangeLanguage", "Home", new { lang = lang.LangCultureName })
        }).ToList();
}

<!-- 渲染下拉框,选择后直接跳转对应切换地址,和原ActionLink逻辑完全一致 -->
@Html.DropDownList(
    name: "SiteLanguageSelector",
    selectList: languageSelectList,
    optionLabel: "切换语言",
    htmlAttributes: new { @onchange = "window.location.href = this.value" }
)

方案2:原生HTML select手写实现(更灵活易定制)

<select id="SiteLanguageSelector" onchange="window.location.href = this.value">
    <option value="">切换语言</option>
    @foreach (var lang in MvcMultilingual.SiteLanguages.AvailableLanguages)
    {
        <!-- 可选:加选中逻辑,默认选中当前使用的语言 -->
        <option 
            value="@Url.Action("ChangeLanguage", "Home", new { lang = lang.LangCultureName })"
            @(System.Threading.Thread.CurrentThread.CurrentUICulture.Name.StartsWith(lang.LangCultureName) ? "selected" : "")
        >
            @lang.LangFullName
        </option>
    }
</select>

功能说明

  • 两种方案的跳转逻辑和原有ActionLink完全一致,不需要调整ChangeLanguage接口的任何代码
  • 可选添加的selected属性逻辑会自动匹配当前页面使用的语言,作为下拉框默认选中项
  • 可自行给下拉框添加class属性定制样式

内容的提问来源于stack exchange,提问作者Hgrbz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:06:00