首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC视图隐藏/取消隐藏控件的模式

ASP.NET MVC视图隐藏/取消隐藏控件的模式
EN

Stack Overflow用户
提问于 2011-07-05 10:52:10
回答 3查看 1.7K关注 0票数 0

我在找一个POEAA

我有一个标准的ASP.NET MVC视图和大量的输入控件。控件的可见性是根据来自2个主下拉控件的输入触发的。例如,值A的DropDown1和值B的DropDown2将只显示完整列表中的几个控件,并且还将更改强制要求。

我该如何设计风景?

  1. 编写java脚本和基于DropDown combinations.There的隐藏/取消隐藏可以是30个组合,因此在新的控件和组合上进行管理可能很困难
  2. 在数据库中创建一个表,给出每个组合的控制it列表,然后在客户端循环中隐藏/取消隐藏?
  3. 还有其他人能建议的模式吗?目的是保持它的清洁和易于管理

真实世界示例

正在处理一份房产挂牌表。基于选定的属性类型和超越类型,控件将被隐藏/显示。

例如,卧室和浴室不适用于地块/土地。有20多个这样的控件,它们的可见性需要基于属性类型/事务类型组合来管理。

名单会增加..。

谢谢你,皮纳金

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-05 11:46:03

我建议通过实现MVVM模式来考虑一种更被动的方法,并建议将knockout.js作为将模型绑定到控件及其属性的一种方法,这样更改模型将产生超出正在更改的值的效果。

希望这将给你一些关于如何前进的想法,但我坚持我最初的评论,期待重新评估你是如何呈现用户界面的。一个视图上的30个控件太多了。把它分解成更小的块,如果你很难管理,那么它对用户也是很难的。

票数 3
EN

Stack Overflow用户

发布于 2011-07-05 11:57:29

对于基于web的应用程序,您应该希望将任何复杂的输入屏幕分解为尽可能不复杂的视图,主要是从用户的角度。

例如,与其修改一个单一选项页,不如让下拉组合将浏览器指向特定于该组合的页/视图。

您最终将获得许多特定的页面/视图,但您将拥有以下几个优点:

  1. 用户不会看到一个根本改变的网页,这可能会使他们感到困惑。
  2. 不太复杂的页面会导致由于部分页面加载而出现问题的可能性更低。
  3. 您的页面/视图是封装的:您知道任何更改都只会影响该组合。

通过使用包含/用户控件和公共代码块,可以尽量减少重复,以尽可能保持代码的干爽。

票数 2
EN

Stack Overflow用户

发布于 2011-07-05 11:58:04

如何使用属性类型和事务类型作为操作方法参数,然后根据这些参数显示不同的视图?然后,您可以根据上下文将结果表单回发到不同的操作,这将使验证变得容易。我认为这是一种相当可维护的方法。(当然,您仍然可以添加UX改进,例如通过AJAX加载视图,而不是完全重定向。)

您可以为不同场景的视图模型创建一个公共基类,并使用EditorForModel助手为每个派生类型显示适当的表单。

代码语言:javascript
复制
public abstract class PropertyViewModelBase { ... }
public class ApartmentForRentViewModel : PropertyViewModelBase { ... }
public class LandForSaleViewModel : PropertyViewModelBase { ... }

然后在你的控制器里:

代码语言:javascript
复制
[HttpGet]
public ActionResult AddProperty(int propertyType, int transactionType) 
{
    PropertyViewModelBase viewModel = // Perhaps a factory that returns an
                                      // empty instance of the proper type?

    return View(viewModel);
}

在(强类型)视图中的某个位置:

代码语言:javascript
复制
@model MyApp.Models.PropertyViewModelBase

[...]

@Html.EditorForModel()

您必须为每种派生类型的PropertyViewModel定义编辑器模板(部分视图)。如果希望根据属性类型+事务类型将表单张贴到不同的操作方法,请将整个HTML表单包含在编辑器模板中。

这是一种可能的方法,它的好处是把单一的、巨大的形式转变成几种更小、更专业的形式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6581499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档