首页 > 解决方案 > MVC Razor 下拉列表默认值未触发 onchange 事件

问题描述

我在通过枚举数据模型对象填充的 c#MVC Razor 应用程序中有一个下拉列表。当用户选择下拉菜单时,我的问题开始发挥作用,默认值是模型中的第一个值,并且当它被选中时,onchange 事件不会被触发。请看下面的代码:

.net 核心 mvc 剃刀视图

            <tr>
                <td>
                    <a id="GenderLnk" href="#">Click Here to Update</a><br>
                    <div id="GenderDiv" style="display:none;">
                        @using (Html.BeginForm("UpdateGender", "Home", FormMethod.Post))
                        {
                            @Html.DropDownListFor(m => m.StudentGender, new SelectList(Enum.GetValues(typeof(Gender))), new { @class = "show", onchange = "this.form.submit();" })
                        }
                    </div>
                </td>
            </tr>

这是模型属性

    public Gender StudentGender { get; set; }

    public enum Gender
    {
        Female,
        Male,
        [Display(Name ="Not Applicable")]
        NotApplicable,
        Transgender

    }

这是下拉列表的屏幕截图,其中包含 Dilan 建议的代码。 可以看到,仍然是女性是默认的

标签: c#asp.net-mvcrazor

解决方案


不触发“onChange”功能的原因是,如果用户在第一次尝试时选择了默认值,它在技术上不会更改表单中的任何值。您可以做的是提供一个像“请选择”这样的值作为默认值,让用户在列表中选择一个值。

@Html.DropDownListFor(m => m.StudentGender, new SelectList(Enum.GetValues(typeof(Gender))), "-- Please Select -- ", new { @class = "show", onchange = "this.form.submit();" })

也许您也可以考虑使用这个问题+答案。希望这可以帮助。

从 ASP.NET MVC 中的 DropDownList 获取默认 NULL 值


推荐阅读