MVC3 Razor无法识别何时停止解析

时间:2012-05-04 00:59:43

标签: javascript asp.net-mvc-3 razor conditional

这是我想要做的事情:

$(document).ready(function () {
    @if (ViewBag.VerifyIfLoggedIn) {

        $("#needlogin-popup").dialog({
            modal: true,
            closeOnEscape: true,
            minHeight: 384,
            minWidth: 596,
            resizable: false,
            show: {
                effect: 'slide',
                duration: 500,
                direction: 'up'
            },
            hide: {
                effect: 'slide',
                duration: 250,
                direction: 'up'
            },
            title: 'Inicie Sesion'
        });
    }
});

如果有的话,请将此Javascript代码输出到页面。

但我收到了错误:

  

CS1056:意外的字符' $'

如何告诉Razor停止解析并输出条件语句中的任何内容?

1 个答案:

答案 0 :(得分:10)

在代码周围使用<text>...</text>

了解它的工作原理:

http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx

  

标签是由Razor专门处理的元素。它   导致Razor将块的内部内容解释为   内容,并且不呈现包含标记元素(意思是   只会呈现元素的内部内容 -   标签本身不会)。

     

这使得在想要渲染多行内容时非常方便   未被HTML元素包装的块。

$(document).ready(function () { 
    @if (ViewBag.VerifyIfLoggedIn) { 
        <text>$("#needlogin-popup").dialog({ 
            modal: true, 
            closeOnEscape: true, 
            minHeight: 384, 
            minWidth: 596, 
            resizable: false, 
            show: { 
                effect: 'slide', 
                duration: 500, 
                direction: 'up' 
            }, 
            hide: { 
                effect: 'slide', 
                duration: 250, 
                direction: 'up' 
            }, 
            title: 'Inicie Sesion' 
        }); </text>
    } 
});