ASP.net MVC v2 - шаблоны стилей - PullRequest
       23

ASP.net MVC v2 - шаблоны стилей

0 голосов
/ 30 октября 2009

Просто интересно, есть ли у кого-нибудь идеи о том, как мы можем стилизовать шаблоны ... Например, если я хочу изменить MaxLength текстового поля, как мне это сделать.

То, что я хотел бы сделать, это то, что я могу делать в WPF со стилями и шаблонами ... В WPF вы можете передавать стили в шаблоны и затем выбирать, где эти стили применяются ... Для случаи, если пользователь устанавливает ширину для элемента управления (который является шаблоном), внутри кода элемента управления я могу выбрать применение этой ширины к любому элементу в шаблоне, который я хочу, или ни к одному вообще ...

Значит, мне было интересно, кто-нибудь знает что-нибудь подобное?

Ответы [ 3 ]

2 голосов
/ 30 октября 2009

Я отправил ответ на похожий вопрос здесь .

Если вы хотите универсальные стили, вы можете получить Модели ваших пользовательских шаблонов из базового класса TemplateViewModel, который будет поддерживать ваши требуемые стили:

public interface ITextSpecifier
{
  int? Size { get; }
  bool AutoGrow { get; }
}

public class TemplateViewModel<T> where T: class
{
  public IDictionary<string, string> Attributes { get; }
  public ITextSpecifier TextStyle { get; private set; }
  public IColorSpecifier ColorStyle { get; }
  public T TextStyle(int size, bool autogrow)
  {
     TextStyle = new TextSpecifier(size, autogrow);
     return this;
  }
}

public class TextBoxViewModel: TemplateViewModel<TextBoxViewModel>
{
}

<%= Html.EditorFor(x => new TextBoxViewModel(Model.StringData).TextStyle(10, false)) %>

В шаблоне:

<!-- template page derived from typed control for TextBoxViewModel -->
<input type='text' <%= Model.TextStyle.Size != null 
    ? "size='" + Model.TextStyle.Size + "'" : "" %> ... />

Это немного работы, поэтому я надеюсь, что они изобрели какой-то общий метод в выпуске MVC v2.

0 голосов
/ 14 июля 2012

Насколько мне известно, самый простой способ сделать это - создать HTML-идентификатор для текстового поля, как показано ниже:

  @Html.EditorFor(model => model.Description, null, "Description", null)

И в конце страницы напишите следующий javascript

 <script type="text/javascript">
        $(function () { $("#Description").css("width","450"); });    
 </script>

NB: - Даже я ненавижу MVC !!!

0 голосов
/ 08 мая 2010

Решением здесь является использование метаданных! Здесь вы можете повторно использовать атрибут проверки аннотации данных StringLength. Создайте новый поставщик метаданных, который считывает максимальную длину из атрибута StringLength и помещает его в словарь AdditionalValues. Ваш поставщик метаданных должен наследоваться от DataAnnotationsModelMetadataProvider. И затем в создаваемом шаблоне в DisplayTemplates или EditorTemplates вы можете получить доступ к максимальной длине строки.

...