3

我有一个剃刀的看法:

<select id="roletypeddl" >
   <option value="@roletype.Id" selected="selected" data-assignabletoperson="@roletype.AssignableToPerson" >@roletype.Name</option>
</select>

因此,在 jquery 中,如果 data-assignabletoperson 为真,我想运行一些代码,因此:

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>

我认为问题在于“True”是大写的。有谁知道如何解决这个问题?

4

2 回答 2

2

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

以下陈述

data-assignabletoperson="True"

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

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

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

示例

于 2013-03-21T08:11:19.783 回答
0

尝试使用:

data-assignabletoperson="@roletype.AssignableToPerson.ToLower()"

例如。

<select id="roletypeddl" >
   <option value="@roletype.Id" selected="selected" data-assignabletoperson="@roletype.AssignableToPerson.ToLower()" >@roletype.Name</option>
</select>

参考:

为什么 Boolean.ToString 输出“真”而不是“真”</a>

此外,您可以使用 javascript:

.toLowerCase()

例如。:

if ($('#roletypeddl').find('option:selected').data('assignabletoperson').toLowerCase() == 'true')
{
  //do something
}
于 2013-03-21T08:17:39.177 回答