2010-03-12 139 views
2

我正在研究一个基于ASP.NET MVC的CMS,它提出了一个相当极端的例子。系统必须允许用户根据不同的字段添加自定义内容类型,并且对于每个字段,都可以添加选项和验证。事情是,所有东西都存储在一个复杂的数据库中,并在运行时使用LINQ进行提取。基于ASP.NET MVC的CMS - 动态生成表单助手

我对ASP> NET MVC非常新鲜,所以出现以下两难困境 我该如何创建内容创建视图,以便表单助手不是预定义的?他在视图代码中但是根据字段的类型加载?我是否必须创建一个工厂类来检查字段的类型属性的值,然后返回一个帮助器,或者有更好的方法来实现它。这个对我来说似乎非常严格,因为无论何时我在Fieldtypes表中进行更改,我都必须确保为该新类型创建一个检查。

public class CType { 
    string Name; //e.g Post Article etc 
    List<ContentData> data ; 
... 
} 

public class ContentData { 
    string Data; // Basically this is the data stored for each field 
    FieldInstance fieldInstance; 
... 
} 

public class FieldInstance { 
    string Title; // e.g Title Body etc. 

    FieldType Type ; // e.g textbox textarea image checkbox etc 
... 
} 

public class FieldType { 
    string Type; // e.g textbox textarea image checkbox etc 
... 
} 
+0

,被升级到2出了问题? – jfar 2010-03-12 16:55:50

+0

你是什么意思?我正在使用MVC2 – xantrus 2010-03-12 17:57:29

+0

因为MVC2有很多有趣的选项可以帮助解决这个问题,所以稍后我会看看是否可以输入答案。 – jfar 2010-03-12 19:14:51

回答

1

我在将来会看到一个HTML助手。 HTML Helper可以在运行时处理您的模型,并为视图输出适当的HTML。如果你走这条路线,我建议你去了解StringBuilder和TagBuilder类。他们将简化事情并帮助您使HTML助手更具可读性。

+0

这件事现在对我来说似乎很复杂。想象一下,我在内容类型中有一个“图片”字段,这意味着当我添加内容时,它必须提供带有浏览按钮的表单,并且当我查看同一条内容时,它必须显示图片本身,没有明确表示任何意见。 – xantrus 2010-03-12 18:13:26

+0

您可以快速编辑您的问题并向我展示您将通过视图显示您的内容的对象的示例。如果我看到我可以向您展示一个快速代码示例。 – 2010-03-12 19:26:28

+0

我在这里提供了一个非常简单的版本,我的代码是关于什么的。假设我通过一系列ContentData变量传递视图,并基于FieldInstance类型和视图的类型(Create,Edit,Index ...),选择适当的帮助器。在上例中,创建视图将显示带有浏览按钮的表单,索引视图将根据数据字段中包含的地址显示图像。希望,你可以得到它。 – xantrus 2010-03-12 19:57:50