剃刀块内的asp.net mvc 4 javascript抛出错误

Posted

技术标签:

【中文标题】剃刀块内的asp.net mvc 4 javascript抛出错误【英文标题】:asp.net mvc 4 javascript inside razor block throws error 【发布时间】: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 【参考方案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(对多行有用,其中 @: 适用于单行)。

【讨论】:

以上是关于剃刀块内的asp.net mvc 4 javascript抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc,剃刀部分视图-布尔属性未显示

ASP.Net MVC3 - 将剃刀标记作为参数传递

ASP.NET MVC 4 数据网格

是否可以将单个MVC剃刀视图/页面转换为SPA?

ASP NET MVC href 到图像?

ASP.Net 5 MVC 6,如何使用共享 Error.cshtml 作为默认错误响应