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

Ajax call Parameter does not accept @Model as parameter value

我有以下代码从 .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 显示语法错误。但是,如果我将它硬编码为 1 之类的任何 int 值,那么它就可以正常工作,而不是 @Model.EmployeeId

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

这只是 Visual Studio 中的一个错误,视图应该正常工作。 答案在这里解释:Razor/JavaScript and trailing semicolon.

如果不喜欢,可以在@Model

后面加上"plus zero"
$("#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();
            });
        }
    });
});

要在 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 + "",