剃刀块内的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抛出错误的主要内容,如果未能解决你的问题,请参考以下文章