2

我目前正在使用 ASP.NET,设计表单的人已经将所有服务器控件用于 TextBoxes 和 Dropdowns 等,而实际上它们没有提供回发。一些下拉列表和文本框是我在 jQuery中需要的值据我所知,将这些控件转换为标准html 控件而不是 ASP.NET 服务器控件没有缺点吗?

我想我需要继续将我的 GetDataGrid 按钮作为服务器控件,因为我需要它来回发并接收 PageLoad 事件等 - 所有 asp.net 事件)来更新GridView?或者是否可以从 Web 方法使用 GridView(ASP.NET 服务器控件)并通过 Jquery 调用它?

当然,在我的 webmethod 中,我需要 gridview 的实例来添加数据源——但我不明白如果没有 ASP.NET 事件,这怎么可能——或者我错了?

我想到的另一件事是将 GetGridView 按钮更改为标准 HTML 并从客户端单击事件调用 javascript 回发?这样它会做一个真正的回发,我最终会进入 Page_load。

使所有内容生效,我不想更改 GridView asp.net 控件,因为它的功能与 asp.net 服务器控件一样好,但我不确定我将如何做到这一点。

我记得有一个文档说“如何在没有服务器控件的情况下使用 asp.net 网络表单”,但我似乎找不到它。我想使用像 asp.net MVC 这样的网络表单 - 但我不能将项目更改为 MVC - 它超出了我的控制范围。

我很想听听有关如何执行此操作或评论等的反馈。

我发现 ASP.NET 网络表单会在页面中注入大量代码气味——我使用的是 .NET 3.5,所以很多输出都带有表格等......

4

3 回答 3

1

如果您使用Request.Form["..."]那么您可以获得在标准 html 输入字段中填写的信息。

我建议您不要继续使用 GridView 控件,而是看一下jqGrid或Microsoft 为 jQuery 实施的新模板系统(目前是一个插件,但预计将成为 1.5 版以上核心 jQuery 的一部分)。这些可以绑定到json,可以从 webmethod 或 pagemethod 调用中检索到,以用数据填充模板。

于 2010-11-26T11:17:52.423 回答
1

此外,我认为它不可能从 asp.net(后面的代码)接收 html >control 的值,而无需它具有 runat=server。

使用网络方法。在 html 控件上设置客户端事件(如“onchange”),然后在触发事件时调用的 javascript 函数中,您可以使用 PageMethods 将数据发送到后面的代码。

于 2010-11-26T11:36:45.493 回答
0

一些想法...

GridView 不能在 WebMethod 中创建,即使有办法让它工作,最好还是使用真正的客户端网格。由于这不是一个选项,我认为尝试对现有页面进行任何重大更改没有太大意义。

视图状态

将文本框、按钮等更改为 HTML 版本,可以减少 Viewstate 的大小,但会增加处理与页面交互的方式的复杂性。您可以添加runat="server"到 HTML 控件,这将使您能够控制呈现的内容,并且仍然可以访问服务器端的控件。

.Net 4 为您提供了对视图状态的更多控制,但不幸的是在 3.5 中它并不那么容易。

网格视图

您可以将 GridViews 包装在UpdatePanels中。这是一种为您的页面添加一些交互性的“廉价”方式,尽管您不会在性能方面获得任何收益。

仍然可以在客户端使用 jQuery 操作 Gridview。有很多教程、博客文章等解释如何在 Internet 上执行此操作。

带有 Web 表单的 MVC

也可以在同一个网站中混合 ASP.Net MVC 和 Webforms。听起来您对 MVC 很熟悉,因此您可能希望为任何新页面考虑这种方法。这是一篇博客文章,解释了如何做到这一点。

更新: 这是Scott Hanselman 最近的一篇关于如何将 MVC 与现有 Webforms 应用程序一起使用的文章。

于 2010-11-26T14:03:30.787 回答