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

时间:2009-08-07 00:56:02

标签: asp.net asp.net-mvc optimization webforms

我在内部工作asp.net应用程序并且很想使用asp.net mvc,但我无法将我们的应用程序部署到不受我们控制且目前只有.net的Web服务器上框架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网址看起来很棒......

同样,任何帮助,资源,代码示例或其他什么都会很棒! 谢谢你。

3 个答案:

答案 0 :(得分:3)

可以添加到此

  

使用ashx处理程序进行ajax请求

使用Jayrock处理Ajax请求。这与仅使用JsonResult的MVC非常相似。

  

可以关闭视图状态吗?   以编程方式,如果您知道用户   有javascript

您可以使用此approach检测是否启用了JS。因此相当容易禁用ViewState。如果你有这样的话,可以在基页面轻松处理。所以重复代码的数量 - &gt; 0

另外,你可以找到WebFormsMVP帮助。

答案 1 :(得分:1)

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

ASHX非常适合Ajax请求。我不会再这样做了。

我认为你走在正确的轨道上。你已经把你的图层分开了,把东西放在应该的位置,你似乎知道应该去哪里,知道是成功的一半。

答案 2 :(得分:0)

以为我会添加到这篇文章中(当有人遇到它时)以下链接在使用jQuery(或javascript)时非常有用:

来自Rich Strahl的博客:没有ASP.NET ViewState的jQuery表单序列化:
http://www.west-wind.com/weblog/posts/472329.aspx