使用Razor函数设置Id

时间:2013-05-20 21:33:22

标签: razor

我想根据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是个好主意。我只是问如何在没有警告的情况下获取html中的引号或将它们转换为&quot;。实际上,我的代码正在运行;我只是认为可以采取更好的方法来避免警告。

1 个答案:

答案 0 :(得分:0)

您可以尝试在Razor表达式中使用一些Razor注释,并使每个人都有所不同。

Razor评论如下:@* id1 *@

这可能会让你的警告消失。

或者,你可以做的一个技巧是为你的函数设置第二个未使用的参数,例如int,并给它设置虚拟值以使ID看起来不同。< / p>

<td><button id="@ConvertNameToId( row, 1 )">...</button></td>
<td><button id="@ConvertNameToId( row, 2 )">...</button></td>