CMS на основе ASP.NET MVC - динамическая генерация помощников форм - PullRequest
2 голосов
/ 12 марта 2010

Я работаю над CMS на основе ASP.NET MVC, которая представляет собой довольно экстремальный случай. Система должна позволять пользователю добавлять пользовательские типы контента на основе различных полей, и для каждого поля можно добавлять параметры и проверки. Дело в том, что все хранится в сложной БД и извлекается во время выполнения с помощью LINQ.

Я довольно свеж с ASP> NET MVC, поэтому на ум пришла следующая дилемма Как мне сделать представление создания контента, чтобы помощники форм не были предопределены в коде просмотра, а загружались в зависимости от типа поля? Нужно ли создавать фабричный класс, который проверяет значение свойства type поля, а затем возвращает вспомогательный метод на основе этого, или есть лучший способ сделать это. Этот вариант мне кажется довольно жестким, потому что каждый раз, когда я делаю изменения в таблице типов полей, мне придется обязательно проверять этот новый тип.

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

Ответы [ 2 ]

1 голос
/ 12 марта 2010

Я вижу помощника HTML в вашем будущем. Помощник HTML может работать с вашей моделью во время выполнения и выводить соответствующий HTML-код для представления. Если вы пойдете по этому пути, я предлагаю вам ознакомиться с классами StringBuilder и TagBuilder. Они упростят вещи и помогут сделать ваш HTML Helper намного более читабельным.

0 голосов
/ 16 марта 2010

Я не знал о концепции шаблонных помощников. Это то, что происходит, когда вы новичок в чем-то. В общем, это то, что исправило мою проблему

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...