Razor Page 无法正确解析 <

s k*_*s k 2 asp.net-core razor-pages

使用 VS2019 版本 16.6.5 Razor 页面模型。核心3.1

@{
    if (Model.Mode != enAccessMode.Read)
    {
        <text>
        $("#mTable tbody tr div").removeClass("TrError").
            find("[data-title]").removeAttr("data-title");
        var errs = JSAns.CollectData();
        if (errs !== null) {
            for (var i = 0; i < errs.length; i++) { // Razor doesn't likes the < here!!!!!
                var err = errs[i];
                var e = $("#mQ_" + err.ErrQID);
                e.addClass("TrError");
                e.attr("data-title", err.ErrMsg);
            }
            $("#mQ_" + errs[0].ErrQID)[0].scrollIntoView();
            return;
        }
        </text>
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器不喜欢第 9 行的 < 符号。它在编译期间给出以下错误。使用 < 根本没有帮助,因为它是 JavaScript 代码,而不是文本字符串。

在解析“”标记之前已到达文件结尾或意外字符。标记块内的元素必须完整。它们必须是自闭合的(“<br />”)或具有匹配的结束标记(“<p>Hello</p>”)。如果要显示“<”字符,请使用“<” HTML 实体。

Bra*_*ang 6

正如错误所示,razor 会将 < 视为不完整的 html 标签。为了解决这个问题,我建议您可以尝试以下解决方法。

@Html.Raw("<")
Run Code Online (Sandbox Code Playgroud)

全部代码:

    <text>
        $("#mTable tbody tr div").removeClass("TrError").
        find("[data-title]").removeAttr("data-title");
        var errs = JSAns.CollectData();
        if (errs !== null) {
        for (var i = 0; i @Html.Raw("<") errs.length; i++) {
        var err = errs[i];
        var e = $("#mQ_" + err.ErrQID);
        e.addClass("TrError");
        e.attr("data-title", err.ErrMsg);
        }
        $("#mQ_" + errs[0].ErrQID)[0].scrollIntoView();
        return;
        }

    </text>
Run Code Online (Sandbox Code Playgroud)