Объединение контроллера и представлений для создания пользовательского элемента управления в MVC .NET - PullRequest
1 голос
/ 26 июня 2011

Я создаю многоразовые элементы управления с поддержкой AJAX в коде бритвы MVC.Он использует контроллер и один или несколько видов Razor для работы.Как лучше всего изолировать эти файлы кода от остальной части моего проекта?Логично, что для меня не имеет смысла смешивать Controller и Views в основных файлах Controller и View, которые я использую для остальной части проекта.

А что если я захочу повторно использовать элемент управления?

1 Ответ

1 голос
/ 26 июня 2011

Я бы, вероятно, сделал метод расширения из HtmlHelper, так что вы можете использовать его, вызвав:

@Html.MyControl("blah", "blah")

из вашего поля зрения.Вот как работает мой MarkdownHelper (хотя на самом деле это не элемент управления, он просто форматирует некоторый текст).Это также, как встроенные вещи имеют тенденцию работать (например, Html.TextBox и т. Д.):

/// <summary>
/// Helper class for transforming Markdown.
/// </summary>
public static partial class MarkdownHelper
{
    /// <summary>
    /// Transforms a string of Markdown into HTML.
    /// </summary>
    /// <param name="helper">HtmlHelper - Not used, but required to make this an extension method.</param>
    /// <param name="text">The Markdown that should be transformed.</param>
    /// <returns>The HTML representation of the supplied Markdown.</returns>
    public static IHtmlString Markdown(this HtmlHelper helper, string text)
    {
        // Transform the supplied text (Markdown) into HTML.
        var markdownTransformer = new Markdown();
        string html = markdownTransformer.Transform(text);

        // Wrap the html in an MvcHtmlString otherwise it'll be HtmlEncoded and displayed to the user as HTML :(
        return new MvcHtmlString(html);
    }
}
...