如何在同一页面上处理多重ASP.net事件,状态和回传?

问题描述:

我只是想知道如何处理很多使用ASP .NET和回发的状态。如何在同一页面上处理多重ASP.net事件,状态和回传?

看到这个图片: see the image

我知道有人可以使用:

  • 的JavaScript客户端脚本改变<input type="text" style="display:none"/>控制传递JavaScript变数ASP .NET
  • 使用ClientScript.RegisterStartupScript为在发回后调用javascript函数
  • 回发后为动态控件重新加载内容

这引入了很多开销,变量,状态,混乱和混乱的代码。

我通常会做到这一点:

  • 多页
  • 每一页是一个完全定义的状态
  • 通过给“回到足下”选项页
  • 通过查询字符串变量用户

我的项目经理不会让我这样做我我自己的风格。
没有ASP .NET AJAX,他们说这会让页面太大而且太慢。

首先,试图使用<input type="text" style="display:none"/>您正在重新发明*。改为使用<input type='hidden' />
页面太大的问题不在ASP.NET AJAX中(但我不喜欢它),但在ASP.NET webforms抽象中。通常viewstate变得太大(页面重量的60-70%或更多),这真的很糟糕。另外当你只有一个窗体有很多编辑控件时,所有的输入值(html输入,在asp.net - 文本框,复选框等等)将在每次回发时发送回服务器。在我看来这是糟糕的,真的很糟糕。解决方案是不使用webforms。你可以试用ASP.NET MVC。使用它你可以很容易地控制你所需要的所有东西,并且没有视图状态,控件状态,页面和控件生命周期的头痛,愚蠢的ctl0 $ ctlSomeValue $ ctlAnotherParam $ MyCoolTextBox标识符(这将在ASP.NET 4中进行更改)。我做了我的选择 - 没有更多的webforms,你好,mvc!
关于你的情况。您可以创建一个web服务(一些RESTful或类似的东西),它将提供所有添加/编辑/移动/删除项目的方法。并创建一个将使用此服务添加/创建/移动/删除项目的页面。这需要对JS有很好的了解,或者至少有一个很大的愿望来学习它。我更喜欢这种方法,只有小的请求才能在页面上执行一些操作,以便用户会很开心。有关页面和页面状态的信息不会被破坏 - 所有对服务的请求都将通过AJAX进行。
另一种解决方案是手动管理所有这些状态 - 隐藏字段,查询变量等。对于ASP.NET WebForms来说,这是一种非常艰难的方法。这将需要很多时间。
所以我的建议是转移到MVC或为服务创建一些UI前端。
而在ASP的另一块石头。NET WebForms方 - http://blog.stevehorn.cc/2009/05/aspnet-webforms-and-mvc.html

+0

感谢您的答案。 似乎我需要进入ASP .NET MVC,对我来说这是一个新概念,在这里发现了。 – 2009-06-05 10:46:00