【问题标题】:Why does R# warn me about a commented-out line in CSHTML?为什么 R# 会警告我 CSHTML 中的注释行?
【发布时间】:2013-08-08 16:38:33
【问题描述】:

R# 在注释掉的行上告诉我“可能的'System.NullReferenceException'”:

// report_params = { GUID: @Model.GUID, SerialNumber: @Model.SerialNumber, ReportName: @Model.ReportName }; 

灯泡“代理”具有“检查模型是否不为空”和“断言模型不为空”的选项

为什么 Resharper 会检查注释掉的代码?然而,下面的实时代码却毫发无损:

report_params =
{
    GUID: "@Model.GUID",
    SerialNumber: "@Model.SerialNumber",
    ReportName: "@Model.ReportName"
};

虽然这些 val 周围的引号在我看来是错误的。

更新

R# 还告诉我,这行 HTML 的“未知 css 类 'staticLabel'”:

<label for="BeginDate" class="staticLabel">Begin Date</label>

...当我在同一个 .cshtml 文件中的部分:

.staticLabel {
    display: inline-block;
    width: 140px;
    margin-right: 2px;
    text-align: right;
    font-family: Consolas, Candara, sans-serif;
    font-weight: bold; 
    color: brown;
}

(它不是在抱怨其他应该是未知的类)

更新 2

我有一个“不匹配的结束标签”(被复制了,流氓 rapscallion 隐藏在第 486 行)。

【问题讨论】:

  • 你确定吗?这是一个错误,请在他们的错误跟踪网站上报告。
  • 似乎您正在注释掉 JavaScript,JavaScript 注释中的服务器端代码仍将执行,这就是 R# 所抱怨的。
  • 我已将 CSHTML 添加到标题 - 随时回滚。注意:确保在您的代码中测试“脚本注入”(或至少可能出现无效输出) - 如果 ReportName 包含有趣的字符(如引号)。
  • @Alexei;没关系 - 谢谢。

标签: c# visual-studio-2010 razor resharper


【解决方案1】:

在 ASP.NET MVC razor 视图中,注释标记是 @* 代码 *@。 // 不会注释掉 razor 中的行。

【讨论】:

  • 好的,那么 Visual Studio 搞砸了,因为当我选择该行并混合 Ctrl+K、C(注释)时,它会预先设置重击。
  • @ClayShannon 我认为这是因为 Visual Studio 在使用这样的快捷方式时无法区分 C#/Code-behind 和 ASP.NET 的 Razor 代码。不过,德威尔森是正确的。您必须使用 @* 代码 *@ 将其注释掉,否则它仍在执行中,并且只会在您的网页上显示“//”。
  • 有趣。该快捷键组合在 VS2012 中对我有用。你用的是哪个版本的VS?
  • @dwilson:2010 年和 2003 年在这里工作(2012 年在家)。本项目:2010 Professional.
猜你喜欢
  • 2019-06-03
  • 2021-06-13
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 2013-07-16
  • 2019-08-01
  • 2012-10-17
相关资源
最近更新 更多