【问题标题】:DropDownFor change event not firingDropDownFor 更改事件未触发
【发布时间】:2021-08-24 09:03:18
【问题描述】:

我有以下 Razor 标记:

@Html.DropDownListFor(x => Model.WorkTypeId, new SelectList(Model.WorkTypeList, "Id", "Name", Model.WorkTypeId), " - please select - ", new { style = "background-color: yellow;"})
@Html.DropDownListFor(x => Model.PhaseGroupId, new SelectList(Model.PhaseGroupList, "Id", "Name", Model.PhaseGroupId), " - please select - ", new { style = "background-color: yellow;"})

然后我使用 jQuery $.get 调用加载这些驻留的表单,并将 change 处理程序分配给调用的 success 函数中的两个下拉列表:

function(data) {
    $("#formContainer").html(data);
    $("#WorkTypeId").change(function () {
        lookupMatrixValues($("#WorkTypeId").val(), $("#PhaseGroupId").val());
    });
    $("#PhaseGroupId").change(function () {
        lookupMatrixValues($("#WorkTypeId").val(), $("#PhaseGroupId").val());
    });
})

当我在WorkTypeId 下拉列表中选择一个项目时,change 事件不会触发,而如果我选择一个PhaseGroupId 项目,它的事件会触发。

另外,当我发布表单时,无论为工作类型选择什么值,模型属性WorkTypeId 的值始终为零,就好像选择本身没有检测到更改事件一样。

如果我查看为 DropDownFor 标记呈现的内容,我会发现这两个选择的呈现方式略有不同:

<select id="WorkTypeId" name="WorkTypeId" style="background-color: yellow;">
...
<select data-val="true" data-val-number="The field PhaseGroupId must be a number." id="PhaseGroupId" name="PhaseGroupId" style="background-color: yellow;">

我很好奇为什么只有PhaseGroupId 选择具有data-valdata-val-number 属性,而WorkTypeId 选择没有这些属性。模型属性完全相同:

public int? WorkTypeId { get; set; }
public int? PhaseGroupId { get; set; }

为什么WorkTypeId select 呈现方式不同,为什么它的绑定模型属性从不反映所选内容。无论选择什么,$("#WorkTypeId").val() 始终为零。

【问题讨论】:

    标签: html jquery asp.net-mvc html-select


    【解决方案1】:

    你有一个奇怪的 lambda 语法。恕我直言,应该是

    @Html.DropDownListFor(m=> m.WorkTypeId, ... //or model=>model.WorkTypeId
    @Html.DropDownListFor(m => m.PhaseGroupId ... 
    

    并检查您的视图中是否有另一个 WorkTypeId。 Javascript 绑定它遇到的第一个 id。

    【讨论】:

    • 感谢您注意到这一点,但即使在“修复”我的 lambdas 之后,我仍然可以选择一个工作,一个不工作。
    • @ProfK 你的视图中有另一个 WorkTypeId 吗?
    • 是的,事实上,我做到了,这就是问题所在,谢谢。为什么不回答,我会接受?
    猜你喜欢
    • 1970-01-01
    • 2013-05-26
    • 2021-09-30
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多