我有一个下拉列表,有两个字段IsOwner和Title。
@Html.DropDownListFor(Model => Model.IsOwner, new SelectList(ZahidCarWash.ViewModels.AddServicesViewModel.FillDropDownIsOwnerOptions(), "IsOwner", "Title"), new {
@class = "form-control"
})
// function:
public static List<ZahidCarWash.Models.IsOwnerSelection> FillDropDownIsOwnerOptions()
{
List<ZahidCarWash.Models.IsOwnerSelection> ListOwnerOptions = new List<ZahidCarWash.Models.IsOwnerSelection>();
ListOwnerOptions.Add(new ZahidCarWash.Models.IsOwnerSelection()
{
IsOwner = true,
Title = "Yes"
});
ListOwnerOptions.Add(new ZahidCarWash.Models.IsOwnerSelection() {
IsOwner = false,
Title = "No"
});
return ListOwnerOptions;
}
// class
public class IsOwnerSelection
{
public bool IsOwner { get; set; }
public string Title { get; set; }
}
我试图通过jQuery为它分配一个布尔值'true',但事实并非如此。为什么?
$("#IsOwner option:selected").val(false);
首先,你需要在val()
元素上设置select
,而不是option
。
其次,当你在一个布尔值上调用ToString()
时(就像你提供给DropDownListFor()
的类一样),第一个字符被转换为大写,例如。 True
或False
。因此,在jQuery中设置值时需要匹配这种情况。试试这个:
$('#IsOwner').val('False');
下拉列表项是大写的
$('#IsOwner').val('true'); //Will not work
$('#IsOwner').val('True'); //Works
我认为选项的价值是字符串。所以你应该尝试指定为字符串。