【问题标题】:Escaping paragraph does not work correctly转义段落无法正常工作
【发布时间】:2018-03-03 06:23:29
【问题描述】:

我有以下 JavaScript 函数:

<script>
    $(document).ready(function () {
        if('@TempData["Message"]' != "") {
            $("#myModal").modal();
        }
    });
</script>

它只是用TempData 打开一个模式。

我从后端填充 TempData,例如:

res.Error = string.Join<string>("\\n ", errores);
TempData["Message"]  = res.Error; 

因此,对于每个 res.Error,它都会添加一个转义的新行 (\\n)

当我使用 Chrome 调试应用程序时,TempData 不会转换为:

<script>
    $(document).ready(function () {
        if('Error1\nError2\nError3\nError executed' != "") {
            $("#myModal").modal();
        }
    });
</script>

相反,它会收到如下内容:

$(document).ready(function () {
            if('Error1
                Error2
                Error3
                Error executed' != "") {
                $("#myModal").modal();
            }
        })

如何正确转义这个字符串?

根据下面的评论,我尝试将Environment.NewLine 用作:

res.Error = string.Join<string>(Environment.NewLine, errores);

但是现在 JavaScript 会抛出一个错误:

未捕获的 SyntaxError:无效或意外令牌

JavaScript 输出:

  <script>
           $(document).ready(function () {
                if ('Error1
                     Error2
                     Error3' != "") {
           $("#myModal").modal();
         }
    });
        </script>

为什么会出现 JavaScript 语法错误?

【问题讨论】:

标签: javascript c# asp.net-mvc


【解决方案1】:

不确定您要做什么。

如果你想把一个字符串列表放入一个字符串中,你可以使用这个:

String.join(Environment.NewLine, errores)

如果您使用此数据仅执行检查(如果您的列表中存在数据),最好使用单个值,这将帮助您以更简化的方式进行操作

【讨论】:

  • 我试了一下,但现在我得到 Javascript 错误语法(我更新我的问题)有问题
  • 值 res.Error 的主要用途是什么?您将仅使用该值进行比较吗? res.Error 的类型是什么?
  • 是的,当它与 null 不同时,它显示带有字符串错误的引导模式,但现在它不显示它,因为 JavaScript 有语法错误
  • 您确定是 IF 语句导致了错误吗?还是调用打开模态?尝试添加“alert(1);”在 if 语句之前和内部,看看会发生什么
  • 是的,我是陛下,因为如果我只收到 Error1 它运行正确,但如果我收到超过 1 个(带有转义)我收到语法错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 2013-09-07
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多