【问题标题】:jQuery is to be used with Web Forms or HTML Forms?jQuery 是用于 Web 表单还是 HTML 表单?
【发布时间】:2013-04-01 11:15:05
【问题描述】:

我正在研究 asp.net 和 jQuery,我发现有几种方法可以在 html 中创建表单。

作为一个windows开发者,我发现最常用的方法如下:

  1. HTML 表单
  2. ASP.NET 网络表单
  3. ASP.NET MVC
  4. jQuery
  5. AJAX

现在,我想进一步了解这些差异。我看到Html Forms是最基础的,可以用jQUERY集成,也可以用jQUERY集成ASP.NET Webforms。

a) 如果我使用 jQuery,我是否可以认为 AJAX 对于简单的 web 表单(json 的后获取)无用?

b) 对于简单的 Web 表单,我是否可以过多地考虑 MVC?

c) 你会选择哪一个,为什么?

感谢您的帮助,我浏览了很多网站,我感到非常困惑!

编辑--

更多细节:我有一个通过 REST 调用提供 jsons 的后端,我需要制作一些页面(前端)来显示这些调用的结果(例如:在日历中选择一个日期,告诉我是否有约会可用的)。服务器逻辑已经存在,我正在尝试找到保持其锐利、凉爽和干净(如果可能的话好看!)的最佳方法

【问题讨论】:

    标签: jquery html asp.net-mvc webforms


    【解决方案1】:

    当您深入了解它时,有两种方法可以创建表单并且都使用客户端代码。

    1. HTML
    2. JavaScript

    在几乎所有情况下,使用直接 HTML 是更好的选择。 (看 Progressive EnhancementUnobtrusive JavaScript)。

    但是,如果没有表单处理程序,表单将毫无用处,这需要一些服务器端代码。您还可以使用服务器端代码生成创建表单本身的客户端代码。

    ASP.NET 是一组服务器端技术,其中一些对处理表单很有用。有很多 ASP.NET 的替代品,我使用了很多替代品,而不是 ASP.NET,所以请谨慎使用以下内容,因为我可能对细节有些误解。

    WebForms 是原始的 ASP.NET 做事方式。他们寻求尽可能多地从开发人员那里抽象出客户端代码,以便他们可以在不了解 Web 标准的情况下创建网站。只要您不偏离界限,这就会使事情变得快速且类似于 Windows,此时它就变成了紧身衣。

    ASP.NET MVC 是一种新的(现在不是那么新)和闪亮的方法,它遵循 Ruby on Rails 在开源世界中流行的设计模式(所述模式在 Catalyst、Django、Cake、Play 中也可用!和 Mojito(为五种不同语言命名一个 MVC 框架)。

    如果我使用 jQuery,我是否可以认为 AJAX 对于简单的 web 表单(json 的后获取)无用?

    Ajax 是用于发送 HTTP 请求并处理响应,使用 JavaScript 且无需离开页面的术语。如果您想从客户端来回传递 JSON,那么您几乎必须使用 Ajax(任何其他方法都会引发“为什么是 JSON?”的问题)。

    对于简单的网络表单,我是否可以过多地考虑 MVC?

    什么是简单网络表单?

    对于 WWW 上的任何形式,您都需要某种形式的服务器端技术。 (JavaScript 应用程序是另一回事)。

    你会选择哪一个,为什么?

    很难说,因为“网络表单”是解决方案的一部分,而不是问题,而且您还没有说明您要解决什么问题。不过,一般,我会在服务器上使用 Perl(因为它受到 CPAN 的良好支持),或者使用完全手工制作的 JavaScript、一个或两个微型库,或者使用 YUI(取决于问题是,需要什么级别的浏览器支持)。不过,那里有很多个人喜好很多。根据您可用的技能选择技术通常是更好的选择。

    【讨论】:

    • 感谢您非常详细的回答,我觉得它真的很有帮助。回答您的问题,我必须为已经存在的后端构建一个前端,该后端通过 api REST 调用提供 json。所以我只是想找到最好的可行解决方案来实现这样的事情。例如,为拥有一些用户列表并在页面中显示它们进行 GET 调用,或者为预约约会进行 POST 调用,并带有一些参数(仍在 json 中)--所以这是我对“简单网络表单”的定义",很抱歉之前没有描述它。非常感谢您的关注!
    【解决方案2】:

    至于 WebFroms:

    ASP.NET Web 窗体允许您使用熟悉的拖放、事件驱动模型构建动态网站。一个设计表面和数百个 控件和组件让您快速构建复杂、强大的 具有数据访问权限的 UI 驱动网站。

    http://www.asp.net/web-forms

    至于 MVC(微软):

    ASP.NET MVC 为您提供了一种强大的、基于模式的方式来构建动态 能够清晰分离关注点并提供 您可以完全控制标记以实现愉快、敏捷的开发。 ASP.NET MVC 包含许多特性,可实现快速、TDD 友好的开发 用于创建使用最新网络的复杂应用程序 标准。

    http://www.asp.net/mvc

    至于你的问题:

    a) 你的问题有点含糊,我认为你的 AJAX 是指微软的 AJAX Control toolkit?那是一堆控件,使您能够(在后台)从服务器异步检索数据,而不会干扰现有页面的显示和行为。 jQuery 是 JavaScript 库,它有更多的功能。这不仅仅是为了对您的数据进行 ajax 处理。您可以在 AJAX 控件中使用 jQuery。

    b) 是的。 MVC 基本上是一种基于模式的方式来创建您的 Web 应用程序**(模型-视图-控制器)**,但我认为您指的是 Microsoft MVC。这取自Microsoft MVC网站:

    决定何时创建 MVC 应用程序

    您必须仔细考虑是否通过以下方式实现 Web 应用程序 使用 ASP.NET MVC 框架或 ASP.NET Web 窗体模型。 MVC 框架不会取代 Web 窗体模型;您可以使用 Web 应用程序的任一框架。 (如果您有现有的 Web 基于表单的应用程序,这些应用程序继续按原样工作 总是有。)

    在您决定使用 MVC 框架或 Web 窗体模型之前 一个特定的网站,权衡每种方法的优点。

    基于 MVC 的 Web 应用程序的优点

    ASP.NET MVC 框架具有以下优点:

    通过划分应用程序可以更轻松地管理复杂性 模型、视图和控制器。它不使用视图 状态或基于服务器的表单。这使得 MVC 框架非常适合 希望完全控制应用程序行为的开发人员。 它使用处理 Web 应用程序的前端控制器模式 通过单个控制器请求。这使您能够设计一个 支持丰富的路由基础设施的应用程序。更多 有关信息,请参阅 MSDN 网站上的 Front Controller。它提供 更好地支持测试驱动开发(TDD)。它适用于 由大型开发人员团队支持的 Web 应用程序和 需要对应用程序进行高度控制的网页设计师 行为。

    基于 Web 表单的 Web 应用程序的优势

    基于 Web 表单的框架具有以下优势:

    它支持通过 HTTP 保存状态的事件模型,它 有利于业务线 Web 应用程序开发。网络 基于表单的应用程序提供了许多受支持的事件 在数百个服务器控件中。它使用页面控制器模式 将功能添加到各个页面。有关详细信息,请参阅页面 MSDN 网站上的控制器。它使用视图状态或基于服务器 表单,这可以使管理状态信息更容易。它运作良好 适用于希望采用的小型 Web 开发人员和设计师团队 大量可用于快速的组件的优势 应用程序开发。一般来说,它不太复杂 应用程序开发,因为组件(Page 类, 控件等)紧密集成,通常需要较少的 代码比 MVC 模型。

    您在此处对网络表单进行了很好的讨论:

    https://stackoverflow.com/questions/46031/why-does-the-asp-net-web-forms-model-suck

    编辑*


    MVC 编程模型具有以下优点:

    • 视图使开发人员能够精确控制呈现的 HTML。
    • 您可以使用路由引擎来精确控制 URL。
    • 业务逻辑、输入逻辑和用户界面逻辑分为模型、控制器和 意见。
    • 单元测试技术和测试驱动开发(TDD)是可能的。

    MVC 的缺点:

    • MVC 可能比网页或 Web 表单更难理解。
    • MVC 强制您分离关注点(模型、视图和控制器)。一些程序员 可能会发现这具有挑战性。
    • 您无法通过将控件拖到页面上来直观地创建用户界面。
    • 您必须全面了解 HTML、CSS 和 JavaScript 才能开发视图。

    Web Forms 编程模型具有以下优点:

    • 使用服务器控件和设计视图,您可以直观地设计页面。
    • 您可以使用范围广泛的功能强大的控件来封装大量功能。
    • 无需编写多行服务器端代码即可显示数据。
    • .aspx 文件中的用户界面与代码隐藏文件中的输入和业务逻辑分开。

    使用 Web 表单网站有一些缺点:

    • ASP.NET Web 窗体页面生命周期是 HTTP 上的一个抽象层,可以在 意想不到的方式。你必须对这个生命周期有一个完整的了解才能写 在正确的事件处理程序中编写代码。
    • 您无法精确控制服务器端控件生成的标记。
    • 控件可以向呈现的 HTML 页面添加大量标记和状态信息。 这会增加加载页面所需的时间。

    c) 视情况而定!你想让我做什么? 见(b)

    对于简单的站点/应用程序,我会使用HTML5/CSS3/JavaScript(客户端)和PHP/MySql(服务器端/数据库)

    【讨论】:

    • 感谢您的详细回答。我会用我正在做的项目的细节来回答你的问题:后端通过 REST 调用(get 和 post)提供 jsons,我想用最简单的技术做一个前端。到目前为止,在我看来,html+jquery 的组合是最好的(但我可能会在 webforms 中遗漏一些东西!)
    【解决方案3】:

    我假设您只是想创建一个表单来将信息发布到电子邮件脚本或数据库。

    我认为设置 Web 表单最简单的方法是使用 HTML、JQuery 和 PHP。您只需创建一个 HTML 表单,使用 JQuery 获取数据并将此信息发送到 PHP 脚本。

    类似这样的:

    HTML:

    <input id="name" placeholder="Name">
    <input id="email" placeholder="E-mail">
    <a href="#" id="send">Send</a>
    

    JQuery:

    $("#send").click(function(e){
       e.preventDefault();
       $.post("send.php", { 
           name: $("#name").val(), 
           email: $("#email").val() 
       });
    });
    

    PHP:

    $name = $_POST['name'];
    $email = $_POST['email'];
    //do something with $name and $email
    

    这是一个非常简单的例子,当然你应该改进它。

    编辑:使用 JQuery 发布或检索数据基本上是 AJAX。

    【讨论】:

    • 非常感谢您的帮助。我看到您在这里使用 PHP,因为我来自“windows”学校,我会尝试为我找到最佳解决方案,这将是(我想)尝试尽可能少地学习不同的技术,加深我在一个领域的知识的观点。但是您的 jQuery 示例即使与 asp.net 一起使用也绝对有意义。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多