通过HtmlHelper创建动态RadEditor

时间:2009-04-09 17:33:39

标签: asp.net-mvc telerik

我在ASP.NET MVC(RTM)项目中使用Telerik RadEditor(Q1 2009 SP1)。编辑器在具有静态id的页面上呈现为硬编码对象时效果很好。但是当使用HtmlHelper进行扩展以通过传入Id来进行动态创建时,它似乎将html渲染为标记的全部小写。 HtmlHelper对象是不是偶然地弄乱了这个?属性分别看起来大小写,但这看起来很奇怪。这是我的代码....提前感谢!

               <% if (placeholder.Type.ToLower() == "richtext") { %>
                    <%= Html.RadEditor("placeholder_" + placeholder.Name) %>
                <% } else { %>
                    <%= Html.TextBox("placeholder_" + placeholder.Name, null, new { @class = placeholder.Type }) %>
                <% } %>

助手看起来像这样......

   public static string RadEditor(this HtmlHelper html, string Id)
    {
        var sb = new StringBuilder();

        sb.Append("<telerik:RadEditor ID='" + Id + "' Runat='server' DialogHandlerUrl='~/Telerik.Web.UI.DialogHandler.axd'>");
        sb.Append("<Content>");
        sb.Append("</Content>");
        sb.Append("</telerik:RadEditor>");

        return sb.ToString();
    }

2 个答案:

答案 0 :(得分:2)

目前,如果没有带有ScriptManager的有效Page对象,则无法呈现RadEditor。我们(Telerik)计划在不久的将来添加对“独立”渲染的支持。应该在博客文章中公布,敬请期待。

答案 1 :(得分:1)

问题是标签是服务器端控件。当您将硬编码放入页面时,服务器端标记将转换为html。当您使用htmlhelper时,您输出的是html,并且它不会被处理为服务器端标记。

如果你想做一些动态的事情,你应该使用UserControl(.ascx文件),然后使用Html.RenderPartial方法。