【问题标题】:How can I replace HTML with a razor helper in bulk (possibly using resharper search by pattern)?如何用剃刀助手批量替换 HTML(可能使用 resharper 按模式搜索)?
【发布时间】:2017-10-23 09:28:18
【问题描述】:

我想用剃须刀助手替换剃须刀页面上有一些重复的 HTML。我正在使用 resharper 2017,并希望按模式搜索功能可以为我节省一些时间,但我不知道如何让它做我想做的事。我不确定我是否试图将它用于错误的目的,或者我是否只是使用不当。

这是我要替换的 HTML 的(一小部分):

<li role="presentation" data-bind="visible: includeMtbf">
    <a href="#mtbf-tab" role="tab" data-toggle="tab">Rolling and Monthly MTBF</a>
</li>
<li role="presentation" data-bind="visible: includeMtbfWithoutMonthly">
    <a href="#rolling-mtbf-tab" role="tab" data-toggle="tab">Rolling MTBF</a>
</li>
<li role="presentation" data-bind="visible: includeMtbfByArea">
    <a href="#mtbf-by-location-tab" role="tab" data-toggle="tab">Rolling MTBF by Location</a>
</li>

我编写了以下剃须刀助手:

@helper BuildTab(string tabId, string inclusionVariable, string tabText)
{
    <li role="presentation" data-bind="visible: @inclusionVariable">
        <a href="#@tabId" role="tab" data-toggle="tab">@tabText</a>
    </li>  
}

现在我只需要将原始 HTML 替换为对助手的调用:

@BuildTab("mtbf-tab", "includeMtbf", "Rolling and Monthly MTBF")
@BuildTab("rolling-mtbf-tab", "includeMtbfWithoutMonthly", "Rolling MTBF")
@BuildTab("mtbf-by-location-tab", "includeMtbfByArea", "Rolling MTBF by Location")

为了澄清我想要实现的目标,我已经手动完成了它们,但是有没有办法让 resharper(或 Visual Studio)为我这样做?

我编写了以下模式供 resharper 搜索:

<li role="presentation" data-bind="visible: $inclusionVariable$">
    <a href="#$tabId$" role="tab" data-toggle="tab">$tabText$</a>
</li>

但我不知道如何设置占位符类型以匹配可能出现的任意文本。将它们设置为内容占位符后,它们不会正确匹配,但其他类型似乎都不合适。这可能吗(使用 resharper 或我不知道的 Visual Studio 功能)?

【问题讨论】:

    标签: visual-studio razor resharper


    【解决方案1】:

    我不相信 resharper 可以处理这个问题,但这似乎是使用正则表达式在所有文件中查找和替换的一个案例。 类似(未经测试): 查找模式

    <li\s+role="presentation"\s+data-bind="visible:\s*(\w+)">\s*<a\s+href="#([\w\-]+)"\s+role="tab"\s+data-toggle="tab">([\w\s]+)</a>\s*</li>
    

    替换图案

    @BuildTab("$1", "$2", "$3")
    

    这一切都取决于您的原始代码的规则性,但您也许可以修改搜索正则表达式以处理不规则性。

    【讨论】:

      猜你喜欢
      • 2018-05-19
      • 1970-01-01
      • 2015-03-30
      • 2016-01-17
      • 2010-10-29
      • 2017-05-10
      • 2012-05-24
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多