我已经使用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
答案 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' />
}