【问题标题】:asp.net mvc 4 javascript inside razor block throws error剃刀块内的asp.net mvc 4 javascript抛出错误
【发布时间】:2013-01-03 20:12:44
【问题描述】:

这是我抛出错误的剃须刀代码:

@section script
{
    <script type="text/javascript">
        $(document).ready(function () {
            @if (TempData["Message"] != null)
            {
                showNotification("'" + TempData["Message"].ToString() + "'");
            }
        });
    </script>
}

它说showNotification 不存在。它认为这是一个 C# 代码,它是一个 javascript 函数。有人可以让我知道如何解决此错误吗?谢谢!

【问题讨论】:

  • 我知道这不是答案,人们会向您展示解决此问题的众多方法之一(@:一种语法)。我只是完全删除 @if 语句,而不是显式调用 ToString() 而是隐式调用它。那会工作
  • TempData 的问题是,如果 TempData["Foo"] 为空,那么你会得到一个 NPE。所以使用 ViewBag

标签: c# javascript jquery asp.net-mvc asp.net-mvc-4


【解决方案1】:

在它周围加上一个text 标签,因为编译器认为你的 JavaScript 是 Razor 语法。执行此操作时,您需要将@ 添加到 TempData 调用。

@section script
{
    <script type="text/javascript">
        $(document).ready(function () {
            @if (TempData["Message"] != null)
            {
                <text>showNotification('@TempData["Message"].ToString()');</text>
            }
        });
    </script>
}

【讨论】:

    【解决方案2】:

    除了@Martin 的回答,您还可以在 showNotification 调用前面加上@:。 @: 语法告诉 Razor 将该单行视为 HTML,其中告诉 Razor 将文本标记中的任何内容视为 HTML(对多行有用,其中 @: 适用于单行)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2011-06-09
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多