2016-12-19 56 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,那麼它無法找到。