你似乎混淆了一些事情。
第一的
在 MVC 中没有像 XXXDataSource 这样的控件,您可能会在 Webforms 中找到;这是使用 HTTP 的不同方式。
JSON /* JSONP * 只是用于通过 HTTP 在客户端和服务器之间发送数据的数据格式(即从您的网页到您的 MVC 控制器并再次返回)。它们与实体框架或数据库完全没有任何关系,除了它们所代表的数据通常最终通过其他方式(例如实体框架)最终在服务器端的数据库中结束
因此,例如在使用 KendoUI 时 - 它可以发送 JSON 格式的消息,表示您刚刚添加到客户端的 Datalist 中的新项目,该项目将保存在服务器上。消息通过 HTTP 传输到服务器,如下所示:
{ "NewThingName": "事物的名称", "NewThingColor":"Blue", "NewThingPrice":9.99 }
并由 MVC 的模型绑定器映射到 C# 类,如下所示:
public class NewThingModel
{
public string NewThingName{get;set;}
public string NewThingColor{get;set;}
public decimal NewThingPrice{get;set;}
}
那时,图片中不再有 JSON,直到您可以像这样从控制器发回响应:
public class NewThingAddResponse
{
public int NewThingID{get;set;}
}
这可以追溯到看起来像这样的剑道小部件,即 JSON:
{"NewThingID":5}
然后,Kendo 小部件可以自行更新。在发送数据和接收响应之间发生的事情对于小部件来说根本不感兴趣。
OData是一种协议,它可以在 JSON 和 XML 格式(实际上是一种称为 AtomPub 的特殊 xml 格式)下工作,也可以通过 HTTP 从服务器查询/发送数据。它不仅仅是像 JSON 这样的格式,因为它描述了用于与服务器上的资源交互的一整套命令。
KendoUI dataSource框架对象可以使用 JSON/JSONP 发送数据请求,还可以与 OData 服务交互,使用哪个服务的选择实际上取决于您正在与之交互的服务类型。
如果您有WCF 数据服务并希望通过 HTTP 公开其数据,那么 OData 非常方便,因为对它的支持已融入 WCF;另一方面,如果您使用的是MVC/WebAPI,那么 JSON 可能是更好的选择,因为 WebAPI 中的 OData 支持尚未完成。(JSONP 只是 JSON 的一种特殊形式,它允许您从其他域获取数据,默认情况下在 Ajax 查询中是不允许的)。
我个人推荐 JSON 和 MVC 来使用 KendoUI;我发现它只是工作得更好,但这只是我自己的经验。
MVC 的服务器包装器只是一种更轻松地在.cshtml
文件中配置和呈现 Kendo 小部件的方法;他们不会做任何你在客户端用纯 JavaScript 做不到的事情。我个人喜欢它们,因为它们使小部件的设置更容易管理,尤其是初始数据绑定,但您不需要它们,它们在运行时对小部件的功能几乎没有任何影响。(请注意,您可以混合搭配,使用包装器进行渲染,然后使用 JavaScript 自定义小部件的其他部分)
服务器包装器提供的另一件事是用于网格请求之类的 MVC 模型绑定器,以及用于根据请求自动查询/更新数据库的扩展;尽管这些看起来可以节省时间,但它们可以成为真正的 PITA,因为无法轻松自定义查询数据库的方式,并且它将您与它们的名称空间紧密耦合。
我正在开发一个广泛使用剑道小部件的应用程序,我们根本不使用剑道活页夹;所有数据在发送之前都在客户端形成自定义格式,一旦到达控制器,我们就可以完全控制流程。(我们使用 EF 与我们的数据库交互!)
第二
还要记住,您完全不限于在 MVC 控制器中使用实体框架;那里有很多——Linq2SQL、NHibernate、Dapper 等等。
希望有帮助。