gpt4 book ai didi

c# - 使用 Ajax 绑定(bind)时避免将太多 JSON 数据发送到 Telerik 网格的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:33 24 4
gpt4 key购买 nike

我正在开发的软件使用 ASP.NET MVC 和 Telerik Extensions for ASP.NET MVC 框架。

我遇到的问题是,如果 Telerik 网格使用 ajax 绑定(bind),则很容易将 JSON 格式的意外数据发送到客户端浏览器。

例如,当与使用 ajax 绑定(bind)的 Telerik Grid View 一起使用时,以下操作将导致所有 Client 类的属性被序列化为 JSON。

模型类:

public class Client
{
public int ClientId {get; set; }
public string Name { get; set; }
public string Address { get; set; }
...
public string SocialSecurityNumber { get; set; }
public string BankAccountNumber { get; set; }
}

Controller :

[GridAction]
public ActionResult Index()
{
IEnumerable<Client> clients = clientRepository.GetClients();
return View(new GridModel(clients));
}

查看:

@Html.Telerik().Grid<Client>()
.Columns(columns =>
{
columns.Bound(client => client.ClientId);
columns.Bound(client => client.Name);
columns.Bound(client => client.Address);
}
.DataBinding(db => db.Ajax().Select("Index"))

尽管 SocialSecurityNumberBankAccountNumber 未绑定(bind)到网格,但 JSON 将包含它们,并且可以使用 Firebug 等开发人员工具查看数据。

JSON:

{
"data":[
{
"ClientId":101,
"Name":"Matt",
"Address":"Example Road 12",
...
"SocialSecurityNumber":"1234-5678"
"BankAccountNumber":"12345678",
},
{
"ClientId":102,
"Name":"Karen",
"Address":"Example Road 27",
...
"SocialSecurityNumber":"5678-1234"
"BankAccountNumber":"87654321",
}
],
"total":2
}

您会使用什么解决方案来确保只有预期的属性被序列化并发送到客户端浏览器?

最佳答案

创建一个包含您想要公开的确切属性的 ViewModel,并使用它代替您当前使用的对象:

public class ClientModel
{
public int ClientId {get; set; }
public string Name { get; set; }
public string Address { get; set; }
}

var model = from c in clients
select new ClientModel {
...
};

return View(new GridModel(model));

关于c# - 使用 Ajax 绑定(bind)时避免将太多 JSON 数据发送到 Telerik 网格的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22044362/

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