我很抱歉可能误导了这个头衔,但我不知道一个合适的头衔.
随意编辑.
无论如何,我使用的是ASP.NET Web Forms,也许这不是Web表单的使用方式,但我喜欢手动构建和填充HTML元素.它给了我更多的控制权.
我不使用DataBinding和那种东西.我使用SqlConnection,SqlCommand和SqlDataReader,设置SQL字符串等,并从DataReader读取数据.老学校,如果你喜欢.:)
我确实创建WebControls,这样我每次需要一些控件时都不需要复制粘贴,但大多数情况下,我需要WebControls渲染为HTML,这样我就可以将HTML附加到其他函数中,使用控件渲染最终输出内.
我知道我可以用control.RenderControl(writer)渲染一个控件,但这只能在(pre)Render或RenderContents覆盖中完成.
例如.
我有一个dal.cs文件,其中存储了与数据库通信的所有静态函数和空洞.函数主要返回字符串,以便可以将其附加到其他函数中以呈现最终结果.
我这样做的原因是我想尽可能多地将编码与HTML分开,这样我就不会在HTML中执行<%while(dataReader.Read())%>并显示数据.我把它移到了CodeBehind.我还使用此函数在HttpHandler中呈现AJAX响应.
这很好用,但是当我想添加一个控件(ASP.NET服务器控件(.cs扩展名,而不是.ascx))时,我不知道该怎么做,所以我看到自己编写了与函数相同的控件返回该控件中的字符串或其他函数,它返回字符串并替换RenderContents所做的作业,这样当我需要将控件附加到另一个字符串时,我可以调用该函数.我知道这可能不是一个很好的做法.
当我看到关于ASP.NET MVC的所有教程/视频时,我认为它满足了我的需求,就像MVC一样,你必须自己构建一切(或大部分),我现在已经在使用Web表单.
在这个长篇介绍之后,我想问一下如何构建我的控件以便我可以像我提到的那样使用它们(返回字符串)或者我必须忘记服务器控件并将控件构建为函数并以这种方式使用它们?甚至可以使用ASP.NET服务器控件(.cs扩展名),或者当我说我没有正确使用它时我是对的.
为了清楚起见,我正在讨论如何正确使用Web表单,但是为了避免使用数据绑定器,因为我想通过自己构建所有内容(在Code Behind中呈现HTML).
有人可能会认为我附加的字符串如"some"+"string",我不是.我正在使用StringBuilder,因此没有缓慢.
欢迎提出任何意见.
你需要停止思考"控件"和webforms.MVC是一种完全不同的构建应用程序的方式.
我也讨厌WebForms中的自动渲染器,它们会产生一些从来没有任何意义的糟糕的HTML.但是,你不想在你的代码隐藏中编写你的html并将其作为字符串传递,这只是令人讨厌的.您的演示代码与您的逻辑混合在一起,并且您在c#字符串中编写HTML!
因此,MVC ...您可以查看显示数据并包含允许您发布到控制器的表单,而不是使用代码隐藏和回发进行交互操作的"窗口小部件".
因此,您可以强烈地键入视图到Type,然后通过Model属性访问从控制器传递给它的数据.与UserControls等效的是部分视图(ViewUserControl),可用于模块化类型的渲染代码.例如,您可能会在每次需要渲染时传递Person的Address属性.这样你就不会在整个地方重复html.
PS所有DAL的单个文件?
我希望我永远 不会以这种方式处理您编写的应用程序.如果您的应用程序是字符串繁重,那么有些问题.