【发布时间】:2010-07-23 11:39:54
【问题描述】:
我想知道,在 ASP.NET 中处理常见 HTML 控件的最佳方式是什么?我的意思是,ASP.NET 服务器控件在代码中产生了太多的废话,所以我宁愿使用通用控件。
但是databind怎么样,如何正确管理那些常见的对象(比如combobox、textbox等等)?
【问题讨论】:
我想知道,在 ASP.NET 中处理常见 HTML 控件的最佳方式是什么?我的意思是,ASP.NET 服务器控件在代码中产生了太多的废话,所以我宁愿使用通用控件。
但是databind怎么样,如何正确管理那些常见的对象(比如combobox、textbox等等)?
【问题讨论】:
不要忘记,您始终可以在 any 控件上设置 runat="server" - 包括标准 html 表单控件,例如 <input> 和 <select>,以及其他元素,例如 <div> .真的。
这意味着您可以毫不费力地重新控制 WebForms 页面中的 html 输出 - 只要您不需要 ASP.NET 通常为您处理的视图状态或任何其他更高级的数据绑定/状态管理。
也就是说,学习使用 ASP.NET MVC 框架并不是一个坏主意,因为它不仅可以帮助您重新获得对 html 输出的控制权。通常,在 ASP.NET MVC 中创建页面需要更多的工作,因为没有像 gridview、文本框甚至中继器这样的拖放控件。相反,您使用 html 辅助方法和常规 foreach 循环,这意味着您必须输入更多代码。但是,MVC 框架的设计使您无论如何都不必重复太多代码。
【讨论】:
如果您担心 WebForms ASP.NET 引擎生成的 html 标记,我建议您看看 ASP.NET MVC。它的目的是专门为您提供对生成的 html 的控制。 如果您不想开始学习 ASP.NET MVC,ASP.NET 4.0 WebForms 在生成的 HTML 中为您提供了更大的灵活性(例如仅为特定控件启用 ViewState、设置 html id 等)。
至于数据绑定,同样,如果您深入研究 MVC 并开始从行动的角度思考 -> 结果,您可以获得更多的控制权和灵活性。
后来的编辑:我忘了提到 Razor,这是微软正在开发的新 ViewEngine。它目前处于测试阶段,仅在 WebMatrix 内部,这是一个非常精简的 ASP.NET 的“入门类型”开发平台。在我看来,MVC 与您可以使用 Razor 编写的非常简洁的代码相结合将成为 Web 开发领域的重要趋势引领者。
【讨论】:
ASP.Net 控件生成所有这些“废话”是有原因的。这样您就可以正确地对这些对象进行数据绑定和管理。当您不需要直接数据绑定或不需要通过服务器端代码操作控件时,使用标准 html 控件很有用。
在 ASP.Net 中处理常见 HTML 控件的最佳方法不是直接处理它们。通过使用它们来处理数据和功能,您基本上是在绝育 .Net。您不妨回到经典的 ASP。
【讨论】: