大写的Razor boolean html5属性阻止了jquery中的条件语句

时间:2013-03-21 08:08:36

标签: jquery html asp.net-mvc html5 razor

我有一个剃刀视图:

<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>

我认为问题在于“真实”是大写的。任何人都知道怎么解决这个问题?

2 个答案:

答案 0 :(得分:2)

data-属性不知道您的数据类型。 @roletype.AssignableToPerson html输出为True,但这不是bool值,这是字符串......

以下陈述

data-assignabletoperson="True"

不是bool值,它的字符串,所以你应该像这样比较:

if ($('#roletypeddl').find('option:selected').data('assignabletoperson') == "True")
{
    do something
}

更新: data了解您的数据类型。问题是“真实”。它必须是“真实的”。

EXAMPLE

答案 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
}