gpt4 book ai didi

c# - 从 Kendo Grid 调用我的服务时出现 400 错误请求

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:20 25 4
gpt4 key购买 nike

我正在我的 asp.net mvc 应用程序中处理网格,它需要从现有服务接收对象列表。以前,我在我的 Controller 中使用 .net 代码填充了调用该服务的网格。但是,由于我正在处理的项目结构正在改变,我需要直接从网格调用服务。我已将我的实现从使用服务器包装器更改为仅使用 javascript;

 <div id="grid"></div>
<script>
$(document).ready(function() {
$("#grid").kendoGrid({
dataSource: {
type: "odata",
transport: {
read: {
type: "GET",
url: "http://idex-c1/idex/Unit/AlarmService.svc/GetAlarmsForUnit",
data: {
unitId: "1",
fromDate: "",
toDate: false
}
}
},
schema: {
model: {
fields: {
UnitId: { type: "number" }
}
}
},
pageSize: 20,
serverPaging: true,
serverFiltering: true,
serverSorting: true
},
height: 430,
filterable: true,
sortable: true,
pageable: true,
columns: [
{
field: "UnitId",
filterable: false
}
]
});
});
</script>
</div>

我的第一个问题是:该服务通常会返回具有多个属性的 AlarmContracts 列表。我的网格是否需要了解所有这些属性,或者我是否可以只使用其中的一些属性(如本例中的 ID)?

第二个:为什么我在尝试调用该服务时收到 400 - Bad request?正如我之前所说,通过 Controller 中的 .net 代码调用服务是可行的;

public ActionResult Alarms(int id, DateTime? FromDate, DateTime? ToDate)
{
var unit = UnitClient.GetUnit(id);

var fromDate = FromDate ?? DateTime.Today.AddDays(-20);
var toDate = ToDate ?? DateTime.Now;
Model = new AlarmsViewModel
{
ViewUnitContract = UnitClient.GetUnit(id),
Alarms = AlarmClient.GetAlarmsForUnit(unit.Name, fromDate, toDate)
.Where(x => x.DateOff == null || x.DateAck == null)
.ToArray(),
UnitName = unit.Name,
Unit = new UnitDetailsModel(unit),
FromTime = fromDate,
ToTime = toDate
};

return View(Model);
}

最佳答案

好吧,所以我实际上设法找到了一个解决方案,毕竟使用包装器:)这是我在我的 cshtml 中所做的:

   @(Html.Kendo().Grid(Model.Alarms)
.Name("grid")
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(m => m.Id(s => s.AlarmComment))
.Read(read => read.Action("Alarms_Read", "Alarms", new { id = Model.ViewUnitContract.Id }).Type(HttpVerbs.Get))
.AutoSync(true)
)
.Columns(col =>
{
col.Bound(p => p.DateOn).Format("{0:u}").Title("Date");
col.Bound(p => p.Priority).Width(50);
col.Bound(p => p.ExtendedProperty2).Width(100).Title("Action");
col.Bound(p => p.AlarmTag).Title("Name");
col.Bound(p => p.AlarmComment).Title("Comment");
col.Bound(p => p.ExtendedProperty1).Title("AlarmID");
col.Bound(x => x.DateOff).Title("Value");
})
.HtmlAttributes(new {style = "height:430px;"})

)

这是我的 Controller 操作:

[HttpGet]
public ActionResult Alarms_Read([DataSourceRequest] DataSourceRequest request, int id, DateTime? startDate, DateTime? endDateFilter)
{
var unit = UnitClient.GetUnit(id);

var fromDate = startDate ?? DateTime.Today.AddDays(-20);
var toDate = endDateFilter ?? DateTime.Now;
Model = new AlarmsViewModel
{
ViewUnitContract = UnitClient.GetUnit(id),
Alarms = AlarmClient.GetAlarmsForUnit(unit.Name, fromDate, toDate)
.Where(x => x.DateOff == null || x.DateAck == null)
.ToArray(),
UnitName = unit.Name,
Unit = new UnitDetailsModel(unit),
FromTime = fromDate,
ToTime = toDate
};

return Json(Model.Alarms.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}

希望对其他人有所帮助:)

关于c# - 从 Kendo Grid 调用我的服务时出现 400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21747989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com