ASP.net Core 2.1 returns 中的 Knockout js 未定义?
Knockout js in ASP.net Core 2.1 returns me undefined?
我对 Kcnockout Js 有疑问,当他尝试 return 结果时,他 return 对我毫无区别,我已经验证了承包商,如果他是 return给我发数据,如下图所示,
但是当在视图中加载值列表时,它抛出它是未定义的,如下图所示,
我不知道他为什么给我发那条信息,这是我的控制器代码,
public JsonResult GetGender()
{
ServiceResult serviceResult = new ServiceResult();
serviceResult = this._genderServices.GetListGenders();
return Json(serviceResult);
}
这是查看代码,
<h2>Generos</h2>
<hr />
<p data-bind="visible: IsNewButton">
<a href="#" data-bind="click: New" class="btn btn-primary">Crear Nuevo</a>
</p>
<div id="divListGenders" data-bind="visible: ShowResult">
<table class="table">
<thead>
<tr>
<th>
Genero
</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody data-bind="foreach: Genders">
<tr>
<td style="text-align:left" data-bind="text: GenderName"></td>
<td style="text-align:center">
<a href="#" data-bind="click: $parent.Edit" class=" btn btn-warning"><span class="glyphicon glyphicon-edit"></span></a> |
<a href="#" data-bind="click: $parent.Details" class=" btn btn-info"><span class="glyphicon glyphicon-eye-open"></span></a> |
<a href="#" data-bind="click: $parent.Delete" class=" btn btn-danger"><i class="fas fa-trash"></i></a>
</td>
</tr>
</tbody>
</table>
</div>
<div data-bind="visible: IsBackToListButton">
<a href="#" data-bind="click: BackToList" class="btn btn-info">Regresar</a>
</div>
<script src="~/js/Gender.js"></script>
这是return流派列表的方法,
var LoadListGenders = function () {
$.ajax({
url: '/AdminGenders/GetGender',
data: null,
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
async: true,
success: function (data) {
if (data.Success) {
genderViewModel.Genders.removeAll();
genderViewModel.Genders(data.Data);
}
else {
alert(data.Data);
}
},
error: function (ex) {
alert('Ocurrión un error, cargando los generos.');
}
});
};
}
我在 asp.net MVC 5 上提供了它并且运行良好,我不知道为什么它在 ASP.NET Core 2.1 中对我不起作用,我很感激帮助
在 ASP.NET Core
中,将输出序列化为 JSON
的默认大小写是驼峰式大小写,而 ASP.NET MVC 5
.
是 Pascal 大小写
请注意,您 post 中的第一张图片显示所有属性都是驼峰式:
Object { success: true, message: null, data: Array(1) ... }
与 data
数组中的项目类似:genderId
、genderName
等
解决此问题的一种方法是通过应用驼峰式 属性 名称来更新您的 javascript
代码和 Knockout
绑定。
例如
success: function (data) {
if (data.success) {
// ....
}
else {
alert(data.data);
}
}
或者,您可以选择将 Web API 配置为 return Pacalcased JSON,例如通过在 Startup
ConfigureServices
: 中输入以下代码
services
// ...
.AddJsonOptions(options => {
options.JsonSerializerOptions.PropertyNamingPolicy = null;
})
// ...
我对 Kcnockout Js 有疑问,当他尝试 return 结果时,他 return 对我毫无区别,我已经验证了承包商,如果他是 return给我发数据,如下图所示,
但是当在视图中加载值列表时,它抛出它是未定义的,如下图所示,
我不知道他为什么给我发那条信息,这是我的控制器代码,
public JsonResult GetGender()
{
ServiceResult serviceResult = new ServiceResult();
serviceResult = this._genderServices.GetListGenders();
return Json(serviceResult);
}
这是查看代码,
<h2>Generos</h2>
<hr />
<p data-bind="visible: IsNewButton">
<a href="#" data-bind="click: New" class="btn btn-primary">Crear Nuevo</a>
</p>
<div id="divListGenders" data-bind="visible: ShowResult">
<table class="table">
<thead>
<tr>
<th>
Genero
</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody data-bind="foreach: Genders">
<tr>
<td style="text-align:left" data-bind="text: GenderName"></td>
<td style="text-align:center">
<a href="#" data-bind="click: $parent.Edit" class=" btn btn-warning"><span class="glyphicon glyphicon-edit"></span></a> |
<a href="#" data-bind="click: $parent.Details" class=" btn btn-info"><span class="glyphicon glyphicon-eye-open"></span></a> |
<a href="#" data-bind="click: $parent.Delete" class=" btn btn-danger"><i class="fas fa-trash"></i></a>
</td>
</tr>
</tbody>
</table>
</div>
<div data-bind="visible: IsBackToListButton">
<a href="#" data-bind="click: BackToList" class="btn btn-info">Regresar</a>
</div>
<script src="~/js/Gender.js"></script>
这是return流派列表的方法,
var LoadListGenders = function () {
$.ajax({
url: '/AdminGenders/GetGender',
data: null,
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
async: true,
success: function (data) {
if (data.Success) {
genderViewModel.Genders.removeAll();
genderViewModel.Genders(data.Data);
}
else {
alert(data.Data);
}
},
error: function (ex) {
alert('Ocurrión un error, cargando los generos.');
}
});
};
}
我在 asp.net MVC 5 上提供了它并且运行良好,我不知道为什么它在 ASP.NET Core 2.1 中对我不起作用,我很感激帮助
在 ASP.NET Core
中,将输出序列化为 JSON
的默认大小写是驼峰式大小写,而 ASP.NET MVC 5
.
请注意,您 post 中的第一张图片显示所有属性都是驼峰式:
Object { success: true, message: null, data: Array(1) ... }
与 data
数组中的项目类似:genderId
、genderName
等
解决此问题的一种方法是通过应用驼峰式 属性 名称来更新您的 javascript
代码和 Knockout
绑定。
例如
success: function (data) {
if (data.success) {
// ....
}
else {
alert(data.data);
}
}
或者,您可以选择将 Web API 配置为 return Pacalcased JSON,例如通过在
Startup
ConfigureServices
: 中输入以下代码
services
// ...
.AddJsonOptions(options => {
options.JsonSerializerOptions.PropertyNamingPolicy = null;
})
// ...