将模型属性作为参数传递给javascript函数时Razor视图中的语法错误

时间:2012-09-23 17:23:48

标签: javascript asp.net-mvc razor visual-studio-2012

我在以下代码中的每个逗号(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,一切都在浏览器中正常工作,但我想摆脱IDE中的4个语法错误。

如果我将参数作为strings传递,我不会再出现错误,但是我必须将每个参数转回int以使滑块工作:

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

您对如何编写此调用有任何其他想法,以便我不会出现语法错误吗?

2 个答案:

答案 0 :(得分:14)

Razor Intellisense刚刚在Visual Studio中被破解。您的代码完全有效,您应该忽略这些警告,并希望Microsoft将在以后的版本中修复它。

答案 1 :(得分:1)

要抑制语法错误,请将字符串值换成引号或将数字换行包装在parseInt()中,如下所示:

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

或者,对于您的示例:

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

往返转换令人讨厌,但确实没有时间。