Ajax调用Parameter不接受@Model作为参数值

时间:2015-04-03 03:29:32

标签: c# jquery ajax asp.net-mvc razor

我有以下代码从.CSHTML文件进行Ajax调用。

<script type="text/javascript">
    $("#Save").click(function () {
        var model = {
            EmployeeId: @Model.EmployeeId,
            OverrideTermDate: $('#OverrideTermDate').val(),
            OverrideHireDate: $('#OverrideHireDate').val(),
        };
        $.ajax({
            data: @Model.EmployeeId,
            url: "/Employee/UpdateOverrideDates",
            type: "POST",
            success: function (result) {
                $(function () {
                    $("#dialog").dialog();
                });
            }
        });
    });
</script>

我的VS显示语法错误。但是,如果我将它硬编码为任何int值(如1),那么它代替@Model.EmployeeId,那么它可以正常工作。

现在@Model.EmployeeId不是NULL而且是一个int。只是Ajax不喜欢它。知道为什么吗?我不应该在Ajax调用中使用@Razor组件吗?

2 个答案:

答案 0 :(得分:1)

它只是Visual Studio中的一个错误,视图应该是例外的。 答案在这里解释:Razor/JavaScript and trailing semicolon

如果你不喜欢它,你可以把&#34;加零&#34;在@Model之后

$("#Save").click(function () {
    var model = {
        EmployeeId: @Model.EmployeeId + 0,
        OverrideTermDate: $('#OverrideTermDate').val(),
        OverrideHireDate: $('#OverrideHireDate').val(),
    };
    $.ajax({
        data: @Model.EmployeeId + 0,
        url: "/Employee/UpdateOverrideDates",
        type: "POST",
        success: function (result) {
            $(function () {
                $("#dialog").dialog();
            });
        }
    });
});

答案 1 :(得分:1)

要在JS中使用Razor,请将属性包装在''

data : '@Model.EmployeeId',  

//For passing integer use parseInt('@Model.EmployeeId') or Number('@Model.EmployeeId')

var model = {
        EmployeeId: '@Model.EmployeeId',
        ....
};

引号充当分隔符,因此Razor解析器识别值。

或者,

data : @Model.EmployeeId + "",