【问题标题】:How to implement different data entry modes using jQuery with ASP.net如何使用 jQuery 和 ASP.net 实现不同的数据输入模式
【发布时间】:2012-07-13 11:29:03
【问题描述】:

我正在研究如何实现根据数据输入模式更改的数据输入表单的正确方法。情况如下:

  1. 考虑一个父子表单,其中包含员工列表和显示员工详细信息的部分。

  2. 单击列表中的员工编号将导致员工详细信息使用 HTML 表格显示在屏幕的右侧。

  3. 员工详细信息将首先显示为只读表单。例如,出生国家/地区字段将显示为“SPAN”而不是 SELECT 元素。

  4. 当用户单击“编辑”按钮时,“出生国家/地区”字段将更改为 SELECT 元素,其中包含可供选择的国家/地区列表。

这是我想使用 jQuery 实现的带有 ItemTemplate、EditItemTemplate 和 InsertItemTemplate 的 ASP.NET FormView 的行为。

本质上,数据输入模式将通过单击按钮来切换。我想我会通过对根据数据输入模式包含不同 DOM 元素的字段使用 CSS 规则来解决这个要求。正如我之前提到的,如果模式是只读的,则显示 SPAN,否则显示下拉元素或文本区域。使用 jQuery,我可以根据数据输入模式在不同的类之间切换()。当然,这需要对同一字段使用两种不同类型的元素。

这是最好的方法吗?我很想听听专家的意见。谢谢。

【问题讨论】:

  • 这两个听起来都是错误的,但这可能取决于您的要求和用例。你有这些吗?
  • 嗨,霍根。感谢您的回复。我不想让这件事变得过于复杂。我的目标是拥有一个干净整洁的数据输入屏幕。如果信息是只读的,那么在禁用的下拉列表中显示数据是没有意义的。我所追求的是通过 jQuery 和/或 CSS 来驱动这种机制的机制。例如,如果数据输入模式为“插入”,则在“员工 ID”字段中添加(新建)标签。数据输入的状态在应用程序中很重要。我希望能够去 'If fvwMyForm.DefaultMode = FormViewMode.ReadOnly' then ...就像在 ASP.net 中所做的那样。
  • 如果您的目标是使用 jQuery,那么您应该使用 MVC 而不是表单。 jQuery 对您所描述的 ASP 表单交互没有帮助。另请参阅我的答案的编辑。

标签: jquery asp.net forms data-entry


【解决方案1】:

你有两个选择。

  1. 使用标准的 asp.net 表单。这已经有据可查,通常不包括您描述的两个控件。代替只读控件和编辑控件,服务器端将使用相同的用户控件或服务器控件呈现页面,但处于编辑模式而不是只读模式。 当有安全要求或出于某些其他原因您不希望客户决定哪些项目是可编辑的时,通常会使用这种方式。 (注意,有些人会脾气暴躁并谈论如何使用 AJAX 实现安全性,但这仍然是事实。如果您想要安全性和服务器端验证或处理,这更容易)。

  2. 使用 jQuery / AJAX(和/或 MVC)。在这个模型中,客户端决定接口如何工作的一切,然后将信息发送到 Web 服务。在这种情况下,您可能(如您所描述的)有两个显示和隐藏的控件。通常这比它值得做的工作更多,如果控件是可编辑的,您可以启用和禁用。这取决于(当然)界面元素类型。

你可能会说“好的,很好——但是我应该使用哪个?”

这取决于。

如果您知道其中一种技术,则应该使用您知道的技术。

如果您不了解它们,那么我会说表单对于像这样的简单项目来说更容易。 (很多人会争论,这只是我的观点。)

但是,现在认为带有 AJAX 的 MVC 是更好的堆栈,因为它允许非常复杂的 UI 交互。比你描述的要复杂。它还可以提供更好的用户体验,因为 UI 响应速度更快。


数据条目的状态在应用程序中很重要。一世 希望能够去'如果 fvwMyForm.DefaultMode = FormViewMode.ReadOnly' then ...就像在 ASP.net 中所做的那样。

这没有意义。除非您使用表单,否则服务器(或 StateBag 中)不会有任何与编辑状态相对应的变量。如果你想要这个,那么你必须使用表单而不是 jQuery 来改变你的状态。您将需要一次服务器往返来更改此变量。

【讨论】:

  • 我在听霍根。这个新应用程序将在一个已有 10 年历史并在 .NET 3.5 上运行的网站上运行。 ASP.net MVC 是没有问题的。事实上,即使关闭 JavaScript,一切都必须正常工作。话虽如此,我会说 JavaScript 的启用率为 99.999999%。我发现 FormView 很重。我也尝试过 MS Ajax Control 工具包,但对性能印象不深。我已经尝试过 jQuery,我发现它是一股清新的空气。所以,我正在使用带有 jQ​​uery AJAX 的 Web 服务进行 CRUD 操作。
  • 由于 JavaScript 几乎一直处于打开状态,我不想对服务器控件做太多工作。我的想法是在 HTML 表格或 UL DOM 元素中“抛出”数据输入内容,然后使用带有 JSON 的 jQuery AJAX 来完成这项工作。不要担心 DefaultMode 的东西——这只是关于如何从 jQuery 检测数据输入状态的想法。也许我应该考虑只禁用控件的选项,而不是像您建议的那样为一个字段设置两个控件。
  • @user1309226 - 很难创建一个在 jQuery/AJAX 中运行的网站,如您所描述的,并且在没有 javascipt 的情况下也可以运行。您需要编写两个接口。混合表单/CRUD 可以按照您的描述工作,在您的情况下听起来是个好主意。我的建议是在这种情况下利用 jQuery UI 并使用它们的动态对话框/表单来创建输入表单——服务器端根本不存在这些控件。
  • 感谢您的意见,霍根 - 非常感谢。
猜你喜欢
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 2017-11-19
  • 1970-01-01
相关资源
最近更新 更多