【问题标题】:MVC Razor drop down list default value is not triggering onchange eventMVC Razor 下拉列表默认值未触发 onchange 事件
【发布时间】:2020-06-17 18:20:06
【问题描述】:

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

.net core 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

    }

【问题讨论】:

    标签: c# asp.net-mvc razor


    【解决方案1】:

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

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

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

    Get a default NULL value from DropDownList in ASP.NET MVC

    【讨论】:

    • 嗨,Dilan,我已经尝试过了,但是当我单击下拉菜单时,默认值仍然不是“-- Please Select ---”。这个“请选择”值被插入到下拉列表的顶部,但默认值仍然是女性。我在原始问题中添加了屏幕截图
    • 在更多地使用代码并参考您发布的链接后,我能够获得默认选项以按预期运行。我只需要将 StudentGender 对象设为可空,如您发布的链接中的答案所示。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多