首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC 4-@区段内Javascript函数中的Razor会导致范围错误

ASP.NET MVC 4-@区段内Javascript函数中的Razor会导致范围错误
EN

Stack Overflow用户
提问于 2011-12-27 19:07:50
回答 5查看 11.3K关注 0票数 5

问题是将C#变量放置在@节中的JS函数中会产生不正确的javascript (仅在MVC 4中)。

在MVC 3中的JS函数中,一切都按预期执行。

代码语言:javascript
复制
@section test {

<script type="text/javascript">
    $(function () {
        alert(@DateTime.Now);
    });
</script>
} 

使用相同的代码,并将其放入MVC4应用程序中,您将得到格式错误的JS。

页面上的HTML实际上将呈现如下内容:

代码语言:javascript
复制
<script type="text/javascript">
    $(function () {
        alert(12/27/2011 11:04:04 AM);

而html将发出

);}

注意,未生成结束脚本标记。

在JS函数中的闭合大括号被混淆为Razor中的闭合大括号。

请注意,我还在_Layout.cshtml文件中声明了一个_Layout.cshtml(“test”,false)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-22 12:40:19

有点旧的回答,但我也遇到了同样的问题,soI已经提交了一份关于Microsoft.Connect的反馈报告,希望它能在完全发布之前得到排序。

https://connect.microsoft.com/VisualStudio/feedback/details/720079/mvc-4-javascript-in-section-issue

票数 4
EN

Stack Overflow用户

发布于 2012-03-26 20:06:43

我知道自从这个问题被提出以来,我一直是个懦夫,但你也可以尝试这样的事情。

代码语言:javascript
复制
@section test {
    <script type="text/javascript">
        $(function () {
            alert(@(DateTime.Now));
        });
    </script>
}

注意@后面的"()“。

希望能帮上忙。

票数 4
EN

Stack Overflow用户

发布于 2012-09-07 09:43:53

抱歉,我只是情不自禁地进来.我看不出最初问题中的语法实际上是如何工作的。当我在MVC3中使用VS2010时,它会在"DateTime“下面放一条绿色的线条,当你悬停在上面时,它会说”关闭了条件编译“。但是,如果我用引号包围它,它确实有效,如:

代码语言:javascript
复制
@section test {

<script type="text/javascript">
    $(function () {
        alert("@DateTime.Now");
    });
</script>
} 

然后,当我运行它(F5)时,它会按预期显示JavaScript警报,当我查看源代码时,它会呈现:

代码语言:javascript
复制
<script type="text/javascript">
    $(function () {
        alert("07/09/2012 10:41:26");
    });
</script>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8648284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档