Атрибут ASP.NET MVC - PullRequest
       14

Атрибут ASP.NET MVC

1 голос
/ 16 ноября 2011

Мне нужно создать атрибут, который должен привести к тому, что текстовая область станет текстовым редактором ( TinyMCE / CKEditor ).Как бы мне этого добиться?

Например, моя модель:

public class MyModel
{
    [RichText]
    public string Detail {get;set;}
}

Когда она отрисовывается, она должна отображать область расширенного текста.

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

Предполагая, что вы используете хотя бы MVC2, используйте [UIHint("RichText")], чтобы указать, что вы хотите, чтобы оно было полем RichText, затем создайте EditorTemplate с именем RichText.cshtml (или .aspx, или какую бы технологию просмотра вы не использовали) определите HTML-код, который вы хотите использовать (вам придется создать html, чтобы использовать любой текстовый редактор, который вы используете).

Затем используйте EditorFor () на ваш взгляд, и он должен работать.

Вы также можете использовать [DataType(DataType.Html)], а затем создать Html.cshtml EditorTemplate.

1 голос
/ 16 ноября 2011

Вы можете унаследовать DataTypeAttribute:

public class RichTextAttribute : DataTypeAttribute
{
     public RichTextAttribute() : base("RichText") {}
}

Вы даже можете добавить проверку в этот атрибут, если, например, вы хотите запретить определенные теги HTML, чтобы избежать атак XSS или чего-то еще.

Как указано в другом ответе, вы просто добавляете шаблон редактора для RichText.cshtml или RichText.ascx в папку View \ Shared \ EditorTemplates и в представлении, где вы показываете свойство, используйте:

Html.EditorFor(m => m.Detail)

В вашем шаблоне редактора вы должны добавить свой код для создания TextArea (или как бы вы ни вызывали TinyMCE), а затем вы можете зарегистрировать некоторый скрипт на главной странице, чтобы прикрепить TinyMCE к любому тегу, который выводит ваш шаблон редактора..

...