当我混合剃刀和JS并使用& lt; / text>

本文关键字:text lt 混合 剃刀 JS | 更新日期: 2023-09-27 18:14:07

这个问题是混合Razor和Javascript代码这个问题的结语,在那里我学习了这个语法:

@if (foo)
{
    // C# code
    <text>
    // JS Code
    </text>
}

它工作得很好,直到今天,当我在<text></text>中使用一个JS正则表达式:

$('#bar').html(boo.replace(/<br(['/ ]*)>/g, "'r'n"));

它抛出一个黄页,告诉我br(有一个问题,无法分析。

是否有内联的方式来处理它?

当我混合剃刀和JS并使用<text>& lt; / text>

(取代我之前的答案)

我在MVC视图中测试了这段代码,它可以工作:

<div id="bar" style="border: 1px solid black">
    Dummy content (should be replaced)
</div>
<script type="text/javascript">
    var boo = "<span>hello<br />world</span>";
    var symbolLT = "<";
    @if (1 == 1)
    {
        // C# code
        <text>
        var regex = new RegExp(symbolLT + "br(['/ ]*)>", "g");
        $('#bar').html(boo.replace(regex, "'r'n"));
        </text>
    }
</script>
技巧是将"<"字符从<text></text>块中分离出来,使用new RegExp()。可能比普通的内联表达式可读性差一点,但它确实可以工作。

或者您可以简单地在页面的前面创建正则表达式,所以在<text></text>块之外,然后在里面使用它。