使用expandoobjects MVC4返回数据进行查看

时间:2013-07-11 07:14:29

标签: c# asp.net-mvc-4

我只是想在mvc4中学习expandoobjects。

我有一个模特说

 pulic class A
 {
   public string FirstName{ get; set; }        
   public string LastName{ get; set; }
   public System.DateTimeOffset DOB {get; set; }
 }

说我有另一个模特

 pulic class B
 {
   public string JobTitle{ get; set; }        
   public System.DateTimeOffset FromDate { get; set; }
   public System.DateTimeOffset ThruDate {get; set; }
 }

我为每个型号配备了控制器。 现在我将只有一个视图来列出模型'A'或模型'B'的所有项目。

我听说我们可以使用expandoobjects实现这一点,我应该能够将模型“A”或模型“B”的项目列表写入该单个视图,并且该视图应该显示其内容。 我不知道如何使用expandoobjects开始。

有人可以开始吗?

1 个答案:

答案 0 :(得分:1)

我甚至不会尝试这样做,所需的反思工作量将是可怕的,真正的维护噩梦

设置像这样的文件夹结构

-Views
    -Shared
         -EditorTemplates
              -TextBox.cshtml
              -SelectList.cshtml
              -DateBox.cshtml

在这些editortemplates中,按照您希望的方式设置模板,因此添加您在内部开发的所有相关样式或控件。这些将是您的控件模板。

接下来,在每个pocos上,利用UIHint属性,这将有助于Razor决定每个字段使用哪个模板。

所以

public class A
{
   [UIHint("TextBox")]
   public string FirstName{ get; set; }   
   [UIHint("TextBox")]     
   public string LastName{ get; set; }
   [UIHint("DateBox")]
   public System.DateTimeOffset DOB {get; set; }
}

现在,当editorformodel开始选择它的模板时,它应该选择你的editortemplates并使用它们。

我不喜欢用ui担心混淆poco,我更喜欢更清洁的pocos和特定的观点,但是,我认为这将节省你试图找出你需要输出的东西并使用更多的模板mvc中的功能