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