12

I get a Syntax error on each comma (,) and on the last bracket ()) in the following code:

<script type="text/javascript">
    Filters.priceRangeInit(@Model.Min, @Model.Max, @Model.From, @Model.To);
</script>

The javascript function is in another file and looks like this:

Filters = {
    priceRangeInit: function (min, max, from, to) {
        $('#price-range-slider').slider({
            min: min,
            max: max,
            step: 50,
            values: [from, to],
            slide: function (event, ui) {
                $('#left-price-range-amount').val(ui.values[0]);
                $('#right-price-range-amount').val(ui.values[1]);
            }
        });
    }
};

The model looks like this:

public class PriceRangeFilterModel
{
    public int Min { get; set; }
    public int Max { get; set; }
    public int From { get; set; }
    public int To { get; set; }
}

I use using Visual Studio 2012, ASP.NET MVC 3 and Razor and everything works fine in the browser, but I want to get rid of the 4 syntax errors I get in the IDE.

If I pass the parameters as strings I don't get errors anymore, but then I'd have to cast each one back to int to make the slider work:

<script type="text/javascript">
    Filters.priceRangeInit('@Model.Min', '@Model.Max', '@Model.From', '@Model.To');
</script>

Do you have any other ideas about how to write this call so that I don't get syntax errors?

1
  • 2
    Your code looks fine and because it works in the browser you should not care about the syntax error in VS. The visual studio intelisense - especially in razor - is not perfect. So just ignore the errors. Commented Sep 23, 2012 at 18:29

2 Answers 2

14

Razor Intellisense is just broken in Visual Studio. Your code is perfectly valid and you should ignore those warnings and hope that Microsoft will fix it in future versions.

Sign up to request clarification or add additional context in comments.

Comments

1

To suppress the syntax errors, either wrap string values in quotes or wrap numbers in parseInt() as follows:

var myInt = parseInt('@Model.MyInt');
var myStr = '@Model.MyString';

Or, for your example:

Filters.priceRangeInit(parseInt('@Model.Min'), parseInt('@Model.Max'), parseInt('@Model.From'), parseInt('@Model.To'));

The roundtrip conversion is annoying but takes no time, really.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.