我遇到了将onChange事件绑定到EditorFor的问题,即在部分视图中动态加载国家/地区的下拉列表。我花了几个小时寻找一个关于我做错了什么的解决方案以及为什么在页面加载时prop / attribute onChange事件没有绑定到div元素。
EditorFor块:
<div class="row">
<div class="col-md-2 labelText">@Html.GetResourceString("BuyNow.Step5", "CountryLabel")</div>`enter code here`
<div class="col-md-10">
@Html.EditorFor(m => m.Country, "DropDownSelect", new { DisplayLabel = "empty", List = BaseController.CountryList, CssClass = "tealInput", onChange = "OnChange()" })
</div>
</div>
现在当我在页面上查看源代码时,如果它被加载以检查onChange是否存在于div中,则不是。
在页面加载后查看来源:
<select class="tealInput" data-bind="value: DefaultBilling.Country" data-val="true" data-val-length="The Country value cannot exceed 50 characters. " data-val-length-max="50" id="DefaultBilling_Country" name="DefaultBilling.Country"><option value="">Select</option>
正如您所看到的那样,onchange不存在,到目前为止我还没有调试过这个问题。任何有关这方面的信息和可能的资源,以便研究发现这种情况的原因将不胜感激。
我改变了显示下拉列表的方式:
<div class="row">
<div class="col-md-2 labelText" style="white-space:nowrap;">@Html.GetResourceString("BuyNow.Step5", "CountryLabel")</div>
<div class="col-md-10">
<select class="tealInput" name="country" data-bind='value: DefaultBilling.Country' id="ddlCountry_@Model.AddressTypeId" style="text-align:right;" onchange="OnChange()">
@foreach (var countries in BaseController.CountryList)
{
<option value="@countries.Value">@countries.Text</option>
}
</select>
</div>
</div>
这里同样的问题,在我的手表上显示OnChange()不可用