捆绑Controller和Views以在MVC .NET中创建用户控件

时间:2011-06-25 21:09:58

标签: asp.net-mvc razor custom-controls

我在MVC剃刀代码中创建了支持AJAX的可重用控件。它使用Controller和一个或多个Razor视图来工作。从我的项目的其余部分隔离这些代码文件的最佳做法是什么?从逻辑上讲,将控制器和视图混合在我用于项目其余部分的主控制器和视图文件中是没有意义的。

如果我想重用控件怎么办?

1 个答案:

答案 0 :(得分:1)

我可能会在HtmlHelper上创建一个扩展方法,所以你可以通过调用它来使用它:

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

从您的视图中。这就是我的MarkdownHelper的工作方式(尽管它实际上不是一个控件,它只是格式化一些文本)。这也是内置东西的工作方式(g.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);
    }
}