将MVC3 Razor翻译成MVC2

时间:2014-02-06 11:57:05

标签: c# asp.net-mvc asp.net-mvc-3 razor

我已经使用mvc3 razor开发了web应用程序,但我的客户希望我使用mvc2。 我的问题是我开发了一个帮助程序,它可以将html代码传递给c#代码并将其附加到我的函数中。

这是我的示例助手。

public class SampleHelper
{
    public string Content { get; set; }
    public SampleHelper Content(Func<object, HelperResult> template)
    {
        string html = template.Invoke(null).ToHtmlString();
        this.Content = html;
        return this;
    }
    public MvcHtmlString Render()
    {
        string html = @"<div class='content'>" + this.Content + "</div>";
        return MvcHtmlString.Create(html);
    }
}

这是我在View Html中使用它的方式

@SampleHelper.Create().Content(@<text>
    <input id='sample' type='button' value='test button inside div' />
</text>).Render()

任何人都可以帮我转换为MVC2。 我试过这个链接,但没有运气。 Translate to razor Syntax from MVC 2.0 code

1 个答案:

答案 0 :(得分:1)

这个thread给出了如何实现这种包装扩展的示例。在您的情况下,您可能希望实现DisposableHelper实现:

public static class DisposableExtensions
{
    public static IDisposable SampleHelper(this HtmlHelper htmlHelper)
    {
        string startTag = @"<div class='content'>";
        string endTag = "</div>";
        return new DisposableHelper(
            () => htmlHelper.ViewContext.HttpContext.Response.Write(startTag),
            () => htmlHelper.ViewContext.HttpContext.Response.Write(endTag)
        );
    }
}

然后您可以像BeginForm方法一样使用它:

@using (Html.SampleHelper()){
    <input id='sample' type='button' value='test button inside div' />
}