2

我想根据 DataRow 值设置一个按钮 id,该值可能有一些特殊字符,所以我有一个函数,

string ConvertNameToId( DataRow _row )
{
    return Regex.Replace( _row[ "SpecificColumnName" ].ToString( )
        , "[^A-Z0-9a-z]", "_" );
}

然后,在我的标签中,我有

id="@ConvertNameToId( row )"

这对id="WHAT_EVER"我有用,但是当我在构建标签时使用 if-then 逻辑时,如果我对该函数有多个引用,我会收到警告“此页面上的另一个对象已使用 ID '@ConvertNameToId(row)'。像这样:

if ( boolValue )
{
    <td><button id="@ConvertNameToId( row )">...</button></td>
}
else
{
    <td><button id="@ConvertNameToId( row )">...</button></td>
}

我尝试让函数通过 string.Format 提供引号,这样我就可以id=@ConvertNameToId( row )在没有引号的情况下使用,但后来我得到了id=&quot;WHAT_EVER&quot;.

我并不是说以这种方式分配 id 是个好主意。我只是问如何在没有警告或将其转换为&quot;. 事实上,我的代码正在运行;我只是认为可以采取更好的方法来避免警告。

4

1 回答 1

0

您可以尝试在 Razor 表达式中加入一些 Razor 评论,并使每个人都不同。

Razor 评论如下所示:@* id1 *@

这可能会使您的警告消失。

或者,您可以使用的一个技巧是为您的函数添加第二个未使用的参数,例如 anint并为其提供虚拟值以使 ID 看起来不同。

<td><button id="@ConvertNameToId( row, 1 )">...</button></td>
<td><button id="@ConvertNameToId( row, 2 )">...</button></td>
于 2013-05-20T21:38:49.860 回答