【问题标题】:ASP.NET MVC based CMS - dynamic generation of form helpers基于 ASP.NET MVC 的 CMS - 表单助手的动态生成
【发布时间】:2010-03-12 16:30:30
【问题描述】:

我正在开发一个基于 ASP.NET MVC 的 CMS,它提出了一个相当极端的情况。系统必须允许用户根据不同的字段添加自定义内容类型,并且对于每个字段,都可以添加选项和验证。问题是所有内容都存储在一个复杂的数据库中,并在运行时使用 LINQ 提取。

我对 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
...
}

【问题讨论】:

  • 你用的是MVC1,升级到2就不行了吗?
  • 什么意思?我正在使用 MVC2
  • 因为 MVC2 有一些有趣的选项可以帮助解决这个问题,我会看看我是否可以稍后输入答案。

标签: asp.net-mvc content-management-system factory helper


【解决方案1】:

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

【讨论】:

  • 这件事现在对我来说似乎很复杂。假设我在内容类型中有一个“图片”字段,这意味着当我添加内容时,它必须提供一个带有浏览按钮的表单,而当我查看同一条内容时,它必须显示图片本身,没有在视图中明确说明任何内容。
  • 您能否真正快速地编辑您的问题并向我展示您将通过视图以显示您的内容的对象的示例。如果我看到了,我可以给你看一个快速的代码示例。
  • 我在这里放了一个非常简单的代码版本。假设我使用一堆 ContentData 变量传递视图,并根据 FieldInstance 类型和视图类型(创建、编辑、索引...)选择适当的帮助器。在上面的示例中,创建视图将显示一个带有浏览按钮的表单,索引视图将根据数据字段中包含的地址显示一个图像。希望,你能得到它。
【解决方案2】:

我不知道模板化助手的概念。当您对某事不熟悉时,就会发生这种情况。差不多,这就是解决我的问题的原因

http://msdn.microsoft.com/en-us/library/ee308450%28VS.100,printer%29.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2010-10-21
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    相关资源
    最近更新 更多