如何创建可重用的Web控件库

时间:2014-06-26 02:42:26

标签: javascript php html css asp.net

问题背景
大家好,我一直在为我的雇主开发Windows表单申请大约3年。虽然我的大多数作品都是业余的。我一直在使用visual studio,c#,喜欢通过子类和其他技术创建可重用的窗体控件。现在我的老板要我为这家公司制作网站,我脑海中的第一个想法是创建可重复使用的WEB控件,就像windors form application一样。

我尝试过的方法

  1. 网络用户控制,最初,我发现visual studio支持开发人员创建Web User Control,文件扩展名为* .ascx。我很兴奋找到这个因为我认为我可以像在Windows窗体应用程序开发中那样创建Web控件。但是,它是一个非常大的“BUT”,然后我发现它不能嵌入到汇编文件(DLL)中,也可以在ToolBox中显示它以支持拖放网页设计时间。来自msdn的AFAIK,Web User Control不打算在项目中重复使用。所以我放弃了这种方法。

  2. 服务器控制,然后我发现可以创建Custom Server Control来支持程序集嵌入和ToolBox。它是一个* .cs文件,使用从System.Web.UI.WebControls.WebControlSystem.Web.UI.WebControls.CompositeControl进行子类化的类编写。好的一点是,这正是我想要的:可重用性和设计时支持。但是,最大的缺点是它在创建Web控件本身时不支持拖放。该控件只能由用c#编写的html呈现或由代码创建。如果我想创建更漂亮,更复杂或更有效的控件,我必须将css / javascript嵌入到控件中。无论如何,从MSDN,我需要Server Control

  3. 纯HTML,Javascript(jQuery),CSS ,实际上我一直在使用Server Control方法工作一段时间,只是为了让老板开心。但我仍然不能停止考虑其他更好的解决方案。根据我的理解,网页并不复杂,只需HTML tagjavascript (or other scripting language)CSS to manipulate UI构建(如果我错了,请纠正我)。所以我相信如果我通过纯Html,Javascript和CSS创建Web控件,它当然会更复杂但更兼容。因为Server Control解决方案需要Web服务器支持.Net Framework,它不是免费的并且仅限于Microsoft范围。如果我有办法摆脱.Net,为什么不呢?如果它值得做的话,我愿意花两倍的时间来创造可重复使用的控制。例如,如果我想转向PHP来创建网页,我可能必须通过HTML,Javascript和CSS获得创建我的Web控件的技术。

  4. 我的问题

    1. 说到以上所有,甚至可以仅基于Html,Javascript和CSS创建我的Web控件库?

    2. 如果有,是否有关于此方法的任何教程?

    3. 我真的很想知道商业/专业公司如何创建网页。

    4. 谢谢大家,非常感谢任何建议!

2 个答案:

答案 0 :(得分:0)

  1. 说到以上所有,甚至可以仅基于Html,Javascript和CSS创建我的Web控件库?
  2. 严格来说,你已经习惯了支持上述的控制。这将继续在WebForms中创建的未来项目中工作。

    然而,如果你涉足MVC,那么就会有一个惊人的区别。处理输入的大多数控件都是客户端(可以包含在js wigets和用户验证类中)。另一方面,服务器控件很少,但是_MasterLayouts和Views可以使用PartialViews PartialView 类似于 Web用户控件。在控制器中,您可以返回与服务器控件

    类似的EditTemplates和其他类型

答案 1 :(得分:0)

经过几天的挖掘,我几乎放弃创建自己的javascript库,不仅仅是为了web小部件(UI),我也不想使用第三方js框架,因为:

  1. 花费太多时间:因为它说:'不要重新发明轮子',好吧,我接受/不同意这一点一半。但现在,我根本没有太多时间。这真的是花费时间,很难由个人完成。
  2. 很多javascript框架都很棒,比如dojo,yui,jqui,正如@dandavis所评论的那样,但有些内容的使用很难,至少对我来说(作为js初学者),尤其是dojo。 Dojo非常强大,AFAIK,但它很难实现和使用。我按照官方教程创建了自己的Web小部件,花了一个小时而不是完成它。我可能会放弃太快?
  3. 我仍然想用ajax挖掘asp.net ,它功能强大。并且可以在服务器端轻松操作。
  4. 好吧,我不知道这是不是答案,但这是我个人的问题。非常感谢你们。