我试图将我的模型的属性传递给AJAX表单但是因为bool解析为" true / false"我遇到了问题。
$.ajax({
url: '/Projects/SearchTable2',
type: "GET",
data: {
sub_num: @Model.SubmissionNumber,
read_only: @Model.ReadOnly,
}
});
Model.ReadOnly
解析为true或false,当我尝试执行代码时会抛出Uncaught ReferenceError: False is not defined
。有没有解决方法,或者我可以将变量传递给Controller方法?
答案 0 :(得分:2)
@Model.ReadOnly
呈现为Capital Boolean (True)
且JavaScript不知道,所以只需将代码更改为:
$.ajax({
url: '/Projects/SearchTable2',
type: "GET",
data: {
sub_num: @Model.SubmissionNumber,
read_only: @Model.ReadOnly.ToString().ToLower(),
}
});
答案 1 :(得分:0)
当razor在视图中执行代码时,它会将以下代码输出到浏览器
read_only: True,
假设@Model.ReadOnly
返回布尔值为真。
在C#中,布尔值为True
或False
,但在js中,它是小写true
或false
因此,当浏览器的javascript框架尝试执行此代码时,它不会将True
视为true
。它认为True是一个js变量。但由于我们之前没有定义它,我们得到的是“True is not defined”错误!
你要做的是,将C#代码产生的布尔值转换为js理解的东西。致电ToString()
并致电ToLower
,将True
转换为true
$.ajax({
url: '/Projects/SearchTable2',
type: "GET",
data: {
sub_num: @Model.SubmissionNumber,
read_only: @Model.ReadOnly.ToString().ToLower(),
}
});