我只是想在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开始。
有人可以开始吗?
答案 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中的功能