【问题标题】:How to design this page in razor world如何在剃刀世界设计这个页面
【发布时间】:2012-01-17 16:16:08
【问题描述】:

在 MVC-3/Razor 中,我需要创建一个包含五组控件的页面。每组都有一个下拉菜单和一个文本框。用户将从下拉列表中选择一个选项,然后在文本框中提供一些反馈。

当视图第一次显示时,我只需要在第一组中启用控件。而其他 4 组中的所有控件都应禁用。一旦用户在第一组控件中执行操作(从下拉列表中选择 optino 并在文本框中输入),第二组现在应该启用,而其他组控件仍应禁用。第二个下拉列表中显示的数据取决于用户在第一个下拉列表中选择的内容。一旦用户完成第二组中的操作,第三个下拉列表中的数据将取决于用户在第一个和第二个下拉列表等中选择的任何内容。

我是一个 web 表单 aspx 开发人员,不确定在 MVC-razor 世界中设计这个的最佳方式是什么(因为没有视图状态等)。

【问题讨论】:

    标签: asp.net-mvc-3 razor


    【解决方案1】:
    Step 1)
    

    需要澄清的是什么会导致另一个“sets”被启用?

    • 是在用户在下拉列表中选择了一个项目之后

    • 是在他们在文本框中输入了一些文本之后吗?

    还需要澄清的是,如果您有一个下拉菜单和一个文本框,它们是否同时启用是文本框仅在您在下拉列表中选择了一个项目之后启用?

    一旦你弄清楚了,就继续下一步。

    Step 2)
    

    用户是否需要从一开始就直观地看到 4 个集合(禁用其他 3 个集合)您可以简单地显示其他集合(即时)前一个成功填满后?

    根据答案,这可能会改变您的方法。

    就我而言,我的做法是简单地设置/显示 one 集,并在开始时加载。 一旦用户从下拉列表中选择了一个项目,我将进行 AJAX 调用传递所选项目并返回第二个下拉列表的值列表。 然后,使用 jQuery,我会复制第一个集合的所有行(或 div),同时更改第二个下拉框中的值。

    在第二个下拉列表中选择项目时重复该过程。

    但是等等!还有更多!!!

    假设您已经到达第三组。如果用户决定更改第一个下拉菜单中的值怎么办?如果发生这种情况,您有什么要求?您是否应该删除所有其他集合并从第一格开始?我想是的……

    由于我们不了解您的任务的完整规范,我们只能假设一些东西,这可能(或不是)是最佳途径。

    使用 jQuery 复制一行(或一个 div)非常有趣,而且性能非常好,非常棒。

    请记住,您必须为控件(下拉菜单 + 文本框)提供不同的 ID,因此当您提交表单时,您可以使用 FormCollection 来获取那些动态生成的控件。

    【讨论】:

    • 第 1 步:一旦用户在下拉列表中选择项目并在文本框中输入文本,其他设置将被启用。第 2 步:用户在视觉上需要将其他人视为残疾人。如果用户返回并从第一个下拉列表中更改选择,则需要重新填充其他下拉列表中的数据,而我们应该只清空文本框中的文本。我也在考虑 jquery,但是对于 web 表单,我可以通过 postbacks/viewstate 等轻松地做到这一点
    • 考虑到在文本框中写入文本的同时不能选择下拉列表中的项目,这只会让您选择在用户离开文本框后触发 AJAX 调用 (这可能是也可能不是最好的选择)。我这样说是因为当你离开一个文本框时处理事件并不像我们说的那么简单……在下拉列表中选择一个项目。
    • 就第 2 步而言,是的,您很可能需要亲身体验一下 jQuery。考虑到有大量的例子和愿意提供帮助的人,这应该不是问题。另外...由于您没有太多使用 MVC,因此使用 Web 表单很容易做到这一点是可以理解的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2020-02-19
    • 2020-05-22
    • 2020-07-13
    • 2018-04-24
    • 2019-01-11
    相关资源
    最近更新 更多