代码之家  ›  专栏  ›  技术社区  ›  Martin

ASP.NET(webforms):使用最少的服务器控件并用JQUERY替换?

  •  2
  • Martin  · 技术社区  · 15 年前

    我目前正在与ASP.NET合作,设计表单的人已经使用了所有的服务器控件,比如文本框和下拉列表等,但实际上它们并不提供回发。。一些下拉框和文本框是我需要的值 只有 在jQuery中,据我所见,将这些控件转换为 标准 html控件而不是ASP.NET服务器控件?

    我想我需要继续使用GetDataGrid按钮作为服务器控件,因为我需要它 回发 (和接收页面加载事件等-所有asp.net事件)以更新 网格视图 ? 或者可以使用Webmethod中的GridView(ASP.NET服务器控件)并通过Jquery调用它吗?

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

    我想到的另一件事是将GetGridView按钮更改为标准HTML并从client click事件调用javascript回发??这样会做一个真正的回发,我会在页面加载结束。

    如果一切都生效,我不想更改GridView asp.net控件,因为它的功能以及一个asp.net服务器控件,但我不确定我将如何做到这一点。

    我记得有一个文件说“如何使用没有服务器控件的asp.net webforms”,但我似乎找不到它。我想使用像asp.net MVC这样的web表单-但是我不能将项目更改为MVC-这是我无法控制的。

    我希望听到一些关于如何做到这一点或评论等方面的反馈。

    我发现ASP.NET webforms在页面中注入了很多代码味道-我使用的是.NET 3.5,所以很多输出都是表等。。。

    3 回复  |  直到 15 年前
        1
  •  0
  •   Geoff Appleford    15 年前

    一些想法。。。

    GridView不能在WebMethod中创建,即使有办法让它工作,您最好使用真正的客户端网格。因为这不是一个选择,我不认为有太多的点试图对你现有的页面做任何重大的改变。

    对象

    将文本框、按钮等更改为HTML版本,可以在缩小视图状态的大小上获得一点,但在处理与页面的交互时会增加一些复杂性。您可以添加 runat="server" 到HTML控件,该控件将使您能够控制呈现的内容,并且仍然可以访问服务器端的控件。

    .Net 4给了你对viewstate更多的控制,但不幸的是,在3.5中并没有那么容易。

    网格视图

    你可以把网格视图包装起来 UpdatePanels . 这是一个“廉价”的方式来增加一些互动到你的网页,虽然你不会得到任何性能方面的东西。

    在客户端使用jQuery也可以操作Gridview。有很多教程,博客文章等解释如何在互联网上做到这一点。

    带Webforms的MVC

    它还可以在同一个网站中将ASP.Net MVC与Webforms混合使用。听起来你很熟悉weith MVC,你可能想在任何新页面上考虑这种方法。 Here's 一篇解释如何做到这一点的博客文章。

    更新: Here's Scott Hanselman最近的一篇文章,介绍了如何使用MVC和现有的WebFrm应用程序。

        2
  •  1
  •   Kris van der Mast    15 年前

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

    我建议您不要继续使用GridView控件 jqGrid公司 或者新的 templating system that Microsoft put into place for jQuery (目前是一个插件,但预计将成为1.5版本的核心jQuery的一部分)。这些可以绑定到 json格式 它可以从webmethod或pagemethod调用中检索,以用数据填充模板。

        3
  •  1
  •   franz976    15 年前

    另外,我认为在没有runat=server的情况下,从asp.net(代码隐藏)接收html>控件的值是不可能的。

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