对于我用Razor语法编写的C#代码,我应该遵循StyleCop规则吗?

对于我用Razor语法编写的C#代码,我应该遵循StyleCop规则吗?,razor,stylecop,Razor,Stylecop,特别是关于“SA1126:prefixcallscorectly”规则,它告诉我们对实例成员使用“this.”前缀 我应该在Razor语法中遵循这些规则吗 例如: <span>Name: @this.Model.Name</span> Name:@this.Model.Name 或: @this.Html.DisplayFor(m=>m.Name) 你可能会注意到“这个”在这里是无效的(我同意)。我想遵循一条适用于我所有日常行为准则的规则 StyleCop没有检查R

特别是关于“SA1126:prefixcallscorectly”规则,它告诉我们对实例成员使用“this.”前缀

我应该在Razor语法中遵循这些规则吗

例如:

<span>Name: @this.Model.Name</span>
Name:@this.Model.Name
或:

@this.Html.DisplayFor(m=>m.Name)
你可能会注意到“这个”在这里是无效的(我同意)。我想遵循一条适用于我所有日常行为准则的规则

StyleCop没有检查Razor文件吗?

嗯,“this”前缀的使用是一种个人(可以论证)选择

你可以在这里找到关于这一点的有趣讨论

顺便说一句,例如,Resharper在默认情况下具有相反的规则(删除“无用”这个词-这意味着对编译器无用)

但坦率地说,从某种角度来看,我认为这是噪音多于帮助

其他要点:在您的示例中使用HTMLHelper,如
@Html.DisplayTextFor(m=>m.Name)
,因为它们是强类型的、链接到模型的、注意空值等

我应该在Razor语法中遵循这些规则吗

如果您认为在.cs文件中添加“this”是值得的,那么为什么不将其应用于其他地方的C#代码,例如嵌入到Razor视图文件中?如果在
@{}
块中有多行C#代码,该怎么办?“这个”会变得更有用吗?(关于“这”是否值得的问题在这里并不特别重要,因为您可能已经对使用它进行了标准化。)

StyleCop没有检查Razor文件吗


不,StyleCop不检查Razor文件。StyleCop中目前唯一包含的解析器是C#解析器,它只检查扩展名为“.cs”的文件。

多亏了您的回答,我添加了另一个我忘记的示例。如果您感到困惑,这可能很有用。在这里,这只是噪音(在我看来)=>现在我们还不确定是否值得在我们的CS文件中添加“this.”。我们在选择“this.”或“下划线”前缀之间左右为难。我使用“this.”前缀大约一年了,但现在我很困惑:区分实例和静态成员有什么好处?只要从参数和局部变量识别字段就足够了,可以使用“下划线”前缀进行识别。正如你所知,我们喜欢一个适用于所有C#代码的标准,甚至是关于剃须刀的标准。如果它像Nicole说的那样引起噪音(我同意),那么最好还是删除“this.”前缀规则。
<span>@this.Html.DisplayFor(m => m.Name)</span>