Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVC3 Razor not recognizing when to stop parsing

Here's what I'm trying to do:

$(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'
        });
    }
});

If something is true, then output this Javascript code to the page.

But I'm getting the error:

CS1056: Unexpected character '$'

How can I tell Razor to stop parsing and output whatever is in the conditional statement?

like image 441
Only Bolivian Here Avatar asked May 04 '12 00:05

Only Bolivian Here


1 Answers

Use <text>...</text> around the code.

Read on how it works here:

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

The tag is an element that is treated specially by Razor. It causes Razor to interpret the inner contents of the block as content, and to not render the containing tag element (meaning only the inner contents of the element will be rendered – the tag itself will not).

This makes it convenient when you want to render multi-line content blocks that are not wrapped by an HTML element.

$(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>
    } 
}); 
like image 59
Erik Funkenbusch Avatar answered Nov 14 '22 20:11

Erik Funkenbusch