2016-12-19 55 views
0

我有一个带有DropDownListFor的.Net核心Web应用程序。我有一个AJAX函数,用于检查客户是否在旧系统上有配置文件,然后自动填充这些值。这是伟大的工作,但设置一个下拉列表的值时,模型值始终为0DropDownListFor - 通过jQuery设置值

@Html.DropDownListFor(m => m.CountryId, CountryService.List().Select(c => new SelectListItem { Value = c.Id.ToString(), Text = c.Name }), "select", new { @class = "form-control input-wide input-required" }) 

的Ajax功能

$("#CountryId").val(countryId).change(); 
$("#CountryId").val(countryId); //tried both 

这将下降的价值下降,但打的,除非,CountryId的模型属性始终为0.如果未找到配置文件,并且客户手动注册并选择了国家/地区,它将按预期工作。这几乎就好像该模型没有注意到这种变化?

任何想法我失踪?

谢谢。

+0

你确定生成的ID是'CountryId'吗?和'.val()'应该可以工作 – Satpal

+0

你可以分享你的ajax调用吗?加上你在'CountryId'中设置了什么? – Saadi

+0

发现问题。设置值后,我将下拉菜单设置为禁用。我这样做是为了防止用户更改值。它似乎禁用不会将值发布到控制器。 – user1164558

回答

0

您传递给DropdownListFor的数据必须匹配类型并存在于初始列表中,否则将设置为默认值。让我们举一个例子,如果你的DropdownListFor的绑定数据是SelectItem,那么你必须传递文本和值的类型,如果它的对象(类)你必须传递对象的属性的key/value,并且数据必须存在于列表中,也就是说,如果您的初始列表是1,2,3,4,但是您传递了5,那么它无法找到。