0

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

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

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

  3. 员工详细信息将首先以只读形式显示。例如,Country of Birth 字段将显示为“SPAN”而不是 SELECT 元素。

  4. 当用户单击 Edit 按钮时,Country of Birth 字段将更改为 SELECT 元素,其中包含可供选择的国家/地区列表。

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

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

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

4

1 回答 1

0

你有两个选择。

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

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

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

这取决于。

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

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

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


数据输入的状态在应用程序中很重要。我希望能够去 'If fvwMyForm.DefaultMode = FormViewMode.ReadOnly' then ...就像在 ASP.net 中所做的那样。

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

于 2012-07-13T11:39:38.717 回答