在我们的项目中,我们使用了很多用户控件。它们都不支持AJAX。我们使用UpdatePanel进行部分页面渲染。控件没有适当的客户端函数。
我过去常常在ascx页面本身中创建普通的JS函数。我想这不是向用户控件添加客户端功能的标准方法。然而,我可以实现所有我需要的东西,而不需要使用任何这样的标准。但是,当考虑到可维护性时,它是困难的&很难进行更改&不可伸缩。
所以我想学习创建支持AJAX的用户控件的正确方法。就像Telerik和其他第三方控件如何创建用户控件一样。Microsoft推荐的创建此类控件的方式是什么。
发布于 2015-02-23 09:38:40
您能更具体地说明更新面板的问题吗?
要使用内置ajax,请按1.你需要一个ScriptManager 2.在更新面板中放置所有必要的控件
由于您使用的是用户控件,因此最好在添加用户控件的主页中添加ScriptManager。否则,它可能会给出一个错误,说明找到了多个ScriptManager。
发布于 2015-02-23 10:04:55
UpdatePanel使用AJAX并且易于使用,但是,如果你想要真正的客户端控件,也就是只在需要的时候调用服务器,那么最好去别处寻找。
如果您想编写自己的控件,我建议您阅读一些JavaScript设计模式,特别是模块模式。如果你有不错的JavaScript技能,那么在jQuery的帮助下创建控件是非常容易的--还不如把它做成一个jQuery插件。您可能希望了解一些客户端MVC/MVVM框架,如AngularJS或Knockout可能就足够了,因为至少它们将帮助您进行数据绑定,从而减少在客户端管理数据并将其返回到服务器的痛苦。
但是,除非你正在做一些其他人以前没有做过的事情,否则为什么不使用Telerik或DevExpress的一些现有控件呢?
模块模式的示例(有一堆不同的方法来实现模块模式,这只是其中的一种):
var myModule = {
/* PROPERTIES */
prop1: 'sdfsdf',
prop2: 123,
/* FUNCTIONS */
func1: function () {
alert('!!!');
}
}
/* example use of module */
alert(myModule.prop1);
myModule.func1();
您还需要很好地理解JavaScript中的事件。例如,如果你想创建一个客户端网格(已经有数百万个免费的),你需要处理点击和文本改变类型的事件。例如,处理分页,排序,过滤和任何其他你可能想要离开你的网格的功能。
编辑:刚刚创建了一个基本的JSFiddle,为您提供了一个使用jQuery插件的非常基本的客户端控件的示例。它不能完美地工作,但我认为如果你想尝试制作自己的控件,它可能会给你一个从哪里开始的想法。
https://stackoverflow.com/questions/28670555
复制相似问题