我有一个dropdownlist,它有两个字段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);
首先需要在select
元素上设置val()
,而不是option
。
其次,当您对布尔值调用ToString()
时(在给定给DropDownListFor()
的类的情况下(,第一个字符将转换为大写,例如True
或False
。因此,在jQuery中设置值时,需要匹配这种情况。试试这个:
$('#IsOwner').val('False');
下拉列表项目大写,因此
$('#IsOwner').val('true'); //Will not work
$('#IsOwner').val('True'); //Works
$('#IsOwner').val('true');
和
$('#IsOwner').val('false');
它将在这里工作
我认为选项的值是字符串。所以你应该试着把赋值作为一个字符串。