Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ajax调用参数不接受@Model作为参数值_C#_Jquery_Ajax_Asp.net Mvc_Razor - Fatal编程技术网

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

C# Ajax调用参数不接受@Model作为参数值,c#,jquery,ajax,asp.net-mvc,razor,C#,Jquery,Ajax,Asp.net Mvc,Razor,下面的代码是从.CSHTML文件进行Ajax调用 <script type="text/javascript"> $("#Save").click(function () { var model = { EmployeeId: @Model.EmployeeId, OverrideTermDate: $('#OverrideTermDate').val(), OverrideHireDat

下面的代码是从
.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>

$(“#保存”)。单击(函数(){
var模型={
EmployeeId:@Model.EmployeeId,
OverrideTermDate:$('#OverrideTermDate').val(),
OverrideHireDate:$('#OverrideHireDate').val(),
};
$.ajax({
数据:@Model.EmployeeId,
url:“/Employee/UpdateOverrideDates”,
类型:“POST”,
成功:功能(结果){
$(函数(){
$(“#dialog”).dialog();
});
}
});
});
我的VS显示语法错误。但是,如果我将其硬编码为任何int值,比如1,那么它就可以正常工作,而不是
@Model.EmployeeId


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

这只是Visual Studio中的一个bug,视图应该可以正常工作。 这里解释了答案:

如果你不喜欢,你可以在@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();
            });
        }
    });
});

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

引号充当分隔符,因此Razor解析器可以识别这些值

或者

data : @Model.EmployeeId + "",

您不应该在JS中使用Razor组件,相反,您可以在Razor中创建一个隐藏字段,并在jQuery代码中使用它。请尝试使用
数据:'@Model.EmployeeId'
,但此脚本需要在您的视图中,而不是JS文件中。
var model = {
        EmployeeId: '@Model.EmployeeId',
        ....
};
data : @Model.EmployeeId + "",