如何制作丰富/复合的观点

时间:2010-02-07 17:09:08

标签: asp.net asp.net-mvc view

我最近开始研究ASP.NET MVC。我已经研究了很多例子,这些例子很常见,它们包含非常简单的场景,其中视图将映射到模型中的类型实例或模型中的paritcular类型列表。

我正在寻找撰写/合成视图的指南。从长远来看,我希望Ajax成为等式的一部分,但是现在我正在寻找一个更简单的非Ajax设置。

问题

以下是对受到质疑的问题的描述。域模型包含 A B 类型。

class A
{ String ID, String Name, int Age
  List<B> ListOfB
}

class B
{ String ID, String Name, String Url}

我希望有一个允许以下内容:

  • 显示类型 A 信息
  • 的DropDownList
  • 有关在下拉列表中挑选的特定 A 的详细信息
  • 显示与所选类型相关的 B 类型的列表 A
  • 可以编辑所选类型 A
  • 的数据的表单
  • 允许用户添加新B.
  • 的表单

视图不应该同时显示所有这些,而是​​必须根据用户输入显示信息和功能的不同组合。细节和功能的组合可以例如是:

  1. 最初只显示包含 A
  2. 的下拉列表
  3. 如果在下拉列表中选择了 A
    • 显示在下拉列表中选择的特定 A
    • 显示有关所选 A
    • 的详细信息
    • 显示相关类型 B 的详细信息列表
  4. 用户想要编辑特定的A.
    • 显示在下拉列表中选择的特定 A
    • 显示允许用户编辑特定 A
    • 的表单
    • 显示相关类型 B 的详细信息列表
  5. 用户想要添加新的 B
    • 显示在下拉列表中选择的特定 A
    • 显示有关所选 A
    • 的详细信息
    • 显示相关类型 B 的详细信息列表
  6. 这可能看起来像这样(使用balsamiq模型的网页版本 - 这是一个奇妙的发明!):

    组合2:
    combination 2 mockup

    组合4:
    combination 4 mockup

    创建视图和控制器

    由于解决方案必须允许不同的数据和功能组合,我认为拥有包含占位符的父视图(不要与母版页混淆)是明智的。然后,父视图控制器可以组成模型数据和部分视图的正确组合,并将它们提供给父视图。

    最后;问题:

    • 我的思维方式是否符合asp.net mvc方法?

    • 你能解释/展示(不一定全部)控制器如何编译正确的部分视图组合并将它们提供给父视图吗?

    • 您能指出我基于Ajax的解决方案吗?

    • 您能否推荐包含复杂观点示例的图书/链接?

1 个答案:

答案 0 :(得分:2)

asp.net mvc完全支持您的所有要求,但您应该加快速度:

  1. 您应该考虑实施视图模型,以帮助您从特定视图中分离您的域模型。 Here is a good link on how to start this.

  2. 您需要熟悉客户端javascript框架,以便使用部分html渲染进行ajax工作。 jquery会执行此操作或ms ajaxHere is an example

  3. 详细问题:

    我的思维方式是否符合asp.net mvc方法论?

    Asp.net mvc根本不会限制你,所以基本上完​​全支持

    你能解释/展示(不一定全部)控制器如何编译正确的部分视图组合并将它们提供给父视图?

    如果要分离出一些代码,可以使用部分视图,并且可以通过使用ms ajax或jquery独立加载它们来轻松刷新它们。您将拥有一个映射到父视图的控制器,并可以在ajax调用中委派和刷新部分视图

    您能指出我基于Ajax的解决方案吗?

    jquery会执行此操作或ms ajaxHere is an example

    您能否推荐包含复杂观点示例的图书/链接?

    This link对此进行了很多讨论。