我想根据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="WHAT_EVER"
。
我并不是建议以这种方式分配id是个好主意。我只是问如何在没有警告的情况下获取html中的引号或将它们转换为"
。实际上,我的代码正在运行;我只是认为可以采取更好的方法来避免警告。
答案 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>