受asp.net MVC启发的更好的WebForms

dav*_*eps 5 asp.net asp.net-mvc optimization webforms

我在asp.net应用程序'内部'工作,并希望使用asp.net mvc,但我无法将我们的应用程序部署到不受我们控制的Web服务器,目前只有.net framework v2和IIS6.除了没有时间/金钱用于转换当前的WebForms应用程序之外......

所以任何帮助我创建更好的WebForms asp.net应用程序的信息都会非常感激...我已经从MVC人员那里读到了关于WebForms的"糟糕的"列表,肯定有解决方案/解决方案来制作WebForms"不那么糟糕"......

我理解的东西可以改进(但需要帮助):

  • 删除不回发的页面的viewstate(删除runat ="server"标签?)
  • 最小化viewstate的使用 - 使用<span><asp:literal /></span>而不是asp:标签(我们从不使用服务器端控件的样式属性,但主要使用CssClass属性将CSS保存在CSS文件中)
  • 使用ashx处理程序来获取ajax请求(这可以进一步吗?例如回发到处理程序?)
  • 可以查看状态完全删除仍然回发?(它是读取表单变量而不是读取控制值吗?)
  • 如果你知道用户有javascript,你能以编程方式关闭视图状态吗?例如,ajax请求可以提交表单,但如果禁用javascript将会工作?
  • 我们已经将所有业务逻辑保存在BR/BL层中,并且我们有一个类似的DAL层用于数据库访问...因此后面的aspx代码通常相当轻......(验证也在BR/BL中以便响应针对同一任务的ajax请求或回发需要很少(或没有)重复代码)
  • 使用较少的组件...(较少的服务器控件...在某种程度上这也意味着使用不具有垃圾ID的控件)

我并不真正关心整齐格式化的URL作为其基于内部网的(并且非常无关紧要)和SEO无关紧要......即使MVC网址看起来很棒......

同样,任何帮助,资源,代码示例或任何其他将是真棒!谢谢堆.

Joh*_*han 1

对于 ViewState 问题,请确保您了解 ViewState 和 ControlState 之间的区别。这些文章对我有帮助。我在现有 Webforms 应用程序的 web.config 中关闭 ViewState,并且没有任何问题。我还避免使用任何 *View 控件,而主要坚持使用 PlaceHolder、Literal、Repeater、Button、TextBox、DropDownList(可以在没有 ViewState 的情况下表现得古怪,但没有任何显示)和其他基本控件。您可以在 ViewState 关闭的情况下进行回发。

ASHX 非常适合 Ajax 请求。但我不会再进一步​​了。

我认为你走在正确的道路上。你已经在分离你的层次并将东西放在它应该在的地方,你似乎知道东西应该去哪里,知道是成功的一半。