让剃须刀解释"检查"作为html属性而不是c#关键字

时间:2016-05-17 21:50:31

标签: c# html razor

我已经编写了一个用于创建复选框的自定义html助手,我想将html属性应用为匿名类型,但我无法使用"已检查"复选框的属性,因为编译器认为我引用了C#关键字:

Usage: puttygen ( keyfile | -t type [ -b bits ] )
                [ -C comment ] [ -P ] [ -q ]
                [ -o output-keyfile ] [ -O type | -l | -L | -p ]


>puttygen mykey.pem -t rsa -b 2048 -o mykey.ppk
puttygen: cannot both load and generate a key

产生错误:

@Html.CustCheckbox(p => p.SomeProperty, scope, htmlAttributes: new { checked = "checked" })

有没有办法解决这个问题,所以我仍然可以使用上面的帮助器。它可以与其他html属性一起使用。

1 个答案:

答案 0 :(得分:3)

您需要在checked前加@符号:

@Html.CustCheckbox(p => p.SomeProperty, scope, htmlAttributes: new { @checked = "checked" })

从语言规范(第2.4.2节;强调我的):

  

本节中给出的标识符规则完全符合Unicode标准附件31推荐的规则,但允许下划线作为初始字符(在C编程语言中是传统的),标识符中允许使用Unicode转义序列,和“@”字符被允许作为前缀,以使关键字可用作标识符。