我有一个剃刀视图:
<select id="roletypeddl" >
<option value="@roletype.Id" selected="selected" data-assignabletoperson="@roletype.AssignableToPerson" >@roletype.Name</option>
</select>
因此,在jquery中,如果data-assignabletoperson为true,我想运行一些代码:
if ($('#roletypeddl').find('option:selected').data('assignabletoperson') == true)
{
do something
}
麻烦的是这段代码永远不会被执行。
我认为它与正在制作的html有关:
<select id="roletypeddl">
<option data-assignabletoperson="True" selected="selected" value="5">Manufacturer</option>
</select>
我认为问题在于“真实”是大写的。任何人都知道怎么解决这个问题?
答案 0 :(得分:2)
data-
属性不知道您的数据类型。 @roletype.AssignableToPerson
html输出为True
,但这不是bool值,这是字符串......
以下陈述
data-assignabletoperson="True"
不是bool值,它的字符串,所以你应该像这样比较:
if ($('#roletypeddl').find('option:selected').data('assignabletoperson') == "True")
{
do something
}
更新: data
了解您的数据类型。问题是“真实”。它必须是“真实的”。
答案 1 :(得分:0)
尝试使用:
data-assignabletoperson="@roletype.AssignableToPerson.ToLower()"
例如
<select id="roletypeddl" >
<option value="@roletype.Id" selected="selected" data-assignabletoperson="@roletype.AssignableToPerson.ToLower()" >@roletype.Name</option>
</select>
参见:
Why does Boolean.ToString output “True” and not “true”
此外,您可以使用javascript:
<强> .toLowerCase() 强>
例如:
if ($('#roletypeddl').find('option:selected').data('assignabletoperson').toLowerCase() == 'true')
{
//do something
}