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

Razor Pages中实现Bootstrap下拉选择联动Input Group图标切换

实现Razor Pages中天气选择框的动态图标切换

一、后端C#获取选中值并渲染图标

先在PageModel类中通过[BindProperty]绑定下拉框的值,这样表单提交时就能拿到选中的天气类型:

public class YourPageModel : PageModel
{
    [BindProperty]
    public string Weather { get; set; }

    // 表单提交触发的方法
    public IActionResult OnPost()
    {
        // 此时Weather就是下拉框选中的值,可用于后端逻辑处理
        return Page();
    }
}

然后修改前端代码,通过Razor语法根据选中值动态渲染图标(这里用Bootstrap Icons示例,可替换为你使用的图标库):

<div class="input-group">
    <span class="input-group-text">
        @{
            // 用switch匹配天气和对应图标类
            var iconClass = Weather switch
            {
                "Sunny" => "bi bi-sun",
                "Partially Cloudy" => "bi bi-cloud-sun",
                "Windy" => "bi bi-wind",
                "Cloudy" => "bi bi-cloud",
                "Drizzle" => "bi bi-cloud-drizzle",
                "Rainy" => "bi bi-cloud-rain",
                "Stormy" => "bi bi-cloud-lightning",
                _ => ""
            };
        }
        <i class="@iconClass"></i>
    </span>
    <select id="weather" class="form-control" asp-for="Weather">
        <option selected disabled>Current Weather</option>
        <option value="Sunny">Sunny</option>
        <option value="Partially Cloudy">Partially Cloudy</option>
        <option value="Windy">Windy</option>
        <option value="Cloudy">Cloudy</option>
        <option value="Drizzle">Drizzle</option>
        <option value="Rainy">Rainy</option>
        <option value="Stormy">Stormy</option>          
    </select>
</div>

二、前端即时切换图标(无需提交表单)

如果想要选中天气后立刻更新图标,不用等待表单提交,直接用JavaScript实现:

<div class="input-group">
    <span class="input-group-text" id="weather-icon-wrap">
        <i class=""></i>
    </span>
    <select id="weather" class="form-control">
        <option selected disabled>Current Weather</option>
        <option value="Sunny">Sunny</option>
        <option value="Partially Cloudy">Partially Cloudy</option>
        <option value="Windy">Windy</option>
        <option value="Cloudy">Cloudy</option>
        <option value="Drizzle">Drizzle</option>
        <option value="Rainy">Rainy</option>
        <option value="Stormy">Stormy</option>          
    </select>
</div>

<script>
    const weatherSelect = document.getElementById('weather');
    const iconElement = document.getElementById('weather-icon-wrap').querySelector('i');
    
    // 定义天气与图标类的映射关系
    const weatherIconMap = {
        'Sunny': 'bi bi-sun',
        'Partially Cloudy': 'bi bi-cloud-sun',
        'Windy': 'bi bi-wind',
        'Cloudy': 'bi bi-cloud',
        'Drizzle': 'bi bi-cloud-drizzle',
        'Rainy': 'bi bi-cloud-rain',
        'Stormy': 'bi bi-cloud-lightning'
    };
    
    // 监听下拉框变化事件
    weatherSelect.addEventListener('change', function() {
        const selectedWeather = this.value;
        iconElement.className = weatherIconMap[selectedWeather] || '';
    });
</script>

注意事项

  • 示例中使用Bootstrap Icons,若你用其他图标库(如Font Awesome),替换对应图标类名即可。
  • 后端绑定方式适合需要提交表单保存数据的场景,前端JS方式适合即时交互需求,可根据实际场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:10:31