在运行时使用 AJAX 传递布尔模型 属性
Passing boolean model property with AJAX at runtime
我正在尝试将我的模型的 属性 传递给 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 方法?
当razor执行视图中的代码时,会向浏览器输出如下代码
read_only: True,
假设 @Model.ReadOnly
returns 布尔值真。
在C#中布尔值是True
或False
,但在js中,它是小写的true
或false
所以当浏览器的 javascript 框架尝试执行此代码时,它不会将 True
视为 true
。它认为 True 是一个 js 变量。但是由于我们之前没有定义它,我们得到了 "True is not defined" 错误!
你要做的就是把C#代码产生的boolean值转换成js可以理解的东西。调用 ToString()
并调用 ToLower
,这会将 True
转换为 true
$.ajax({
url: '/Projects/SearchTable2',
type: "GET",
data: {
sub_num: @Model.SubmissionNumber,
read_only: @Model.ReadOnly.ToString().ToLower(),
}
});
@Model.ReadOnly
呈现为 Capital Boolean (True)
并且 JavaScript 对此一无所知,因此只需更改您的代码即可:
$.ajax({
url: '/Projects/SearchTable2',
type: "GET",
data: {
sub_num: @Model.SubmissionNumber,
read_only: @Model.ReadOnly.ToString().ToLower(),
}
});
我正在尝试将我的模型的 属性 传递给 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 方法?
当razor执行视图中的代码时,会向浏览器输出如下代码
read_only: True,
假设 @Model.ReadOnly
returns 布尔值真。
在C#中布尔值是True
或False
,但在js中,它是小写的true
或false
所以当浏览器的 javascript 框架尝试执行此代码时,它不会将 True
视为 true
。它认为 True 是一个 js 变量。但是由于我们之前没有定义它,我们得到了 "True is not defined" 错误!
你要做的就是把C#代码产生的boolean值转换成js可以理解的东西。调用 ToString()
并调用 ToLower
,这会将 True
转换为 true
$.ajax({
url: '/Projects/SearchTable2',
type: "GET",
data: {
sub_num: @Model.SubmissionNumber,
read_only: @Model.ReadOnly.ToString().ToLower(),
}
});
@Model.ReadOnly
呈现为 Capital Boolean (True)
并且 JavaScript 对此一无所知,因此只需更改您的代码即可:
$.ajax({
url: '/Projects/SearchTable2',
type: "GET",
data: {
sub_num: @Model.SubmissionNumber,
read_only: @Model.ReadOnly.ToString().ToLower(),
}
});