Подтвердить что ты не робот

Синтаксическая ошибка в представлении Razor при передаче свойств модели в качестве параметров функции javascript

Я получаю Syntax error для каждой запятой (,) и последней скобкой ()) в следующем коде:

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

Функция javascript находится в другом файле и выглядит следующим образом:

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]);
            }
        });
    }
};

Модель выглядит следующим образом:

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

Я использую Visual Studio 2012, ASP.NET MVC 3 и Razor, и все работает отлично в браузере, но я хочу избавиться от 4 синтаксических ошибок, которые я получаю в среде IDE.

Если я передаю параметры как strings, я больше не получаю ошибок, но тогда мне нужно будет отбросить всех на int, чтобы заставить слайдер работать:

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

Есть ли у вас какие-либо другие идеи о том, как писать этот вызов, чтобы я не получал синтаксических ошибок?

4b9b3361

Ответ 1

Razor Intellisense просто сломан в Visual Studio. Ваш код абсолютно корректен, и вы должны игнорировать эти предупреждения и надеяться, что Microsoft исправит его в будущих версиях.

Ответ 2

Чтобы подавить синтаксические ошибки, либо обведите строковые значения в кавычки, либо оберните числа в parseInt() следующим образом:

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

Или для вашего примера:

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

Конвертация в оба конца раздражает, но на самом деле занимает мало времени.