我有以下代码从.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组件吗?
答案 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 + "",