问题是将C#变量放置在@节中的JS函数中会产生不正确的javascript (仅在MVC 4中)。
在MVC 3中的JS函数中,一切都按预期执行。
@section test {
<script type="text/javascript">
$(function () {
alert(@DateTime.Now);
});
</script>
} 使用相同的代码,并将其放入MVC4应用程序中,您将得到格式错误的JS。
页面上的HTML实际上将呈现如下内容:
<script type="text/javascript">
$(function () {
alert(12/27/2011 11:04:04 AM);而html将发出
);}
注意,未生成结束脚本标记。
在JS函数中的闭合大括号被混淆为Razor中的闭合大括号。
请注意,我还在_Layout.cshtml文件中声明了一个_Layout.cshtml(“test”,false)。
发布于 2012-01-22 12:40:19
有点旧的回答,但我也遇到了同样的问题,soI已经提交了一份关于Microsoft.Connect的反馈报告,希望它能在完全发布之前得到排序。
https://connect.microsoft.com/VisualStudio/feedback/details/720079/mvc-4-javascript-in-section-issue
发布于 2012-03-26 20:06:43
我知道自从这个问题被提出以来,我一直是个懦夫,但你也可以尝试这样的事情。
@section test {
<script type="text/javascript">
$(function () {
alert(@(DateTime.Now));
});
</script>
}注意@后面的"()“。
希望能帮上忙。
发布于 2012-09-07 09:43:53
抱歉,我只是情不自禁地进来.我看不出最初问题中的语法实际上是如何工作的。当我在MVC3中使用VS2010时,它会在"DateTime“下面放一条绿色的线条,当你悬停在上面时,它会说”关闭了条件编译“。但是,如果我用引号包围它,它确实有效,如:
@section test {
<script type="text/javascript">
$(function () {
alert("@DateTime.Now");
});
</script>
} 然后,当我运行它(F5)时,它会按预期显示JavaScript警报,当我查看源代码时,它会呈现:
<script type="text/javascript">
$(function () {
alert("07/09/2012 10:41:26");
});
</script>https://stackoverflow.com/questions/8648284
复制相似问题