Html作为MVC5 Razor上的字符串

时间:2014-10-01 17:09:37

标签: asp.net-mvc razor

目前,我将Html存储在数据库中并填充到Dropdownlist中,就像我在Razor中使用@funcion一样:

private string getHtmlTemplate()
{
    string value = "<select id='htmlTemplate'><option value=''>Html Template</option>";
    int i = 0;
    foreach (AdminHtmlTemplateModel htmlTemplateModel in Model.GetAdminHtmlTemplates())
    {
        value += string.Format("<option value='{0}'>{1}</option>", htmlTemplateModel.templateCode, htmlTemplateModel.templateName);
        //value += string.Format("<option value='{0}'>{1}</option>", i++, htmlTemplateModel.templateName);
        templateCodes.Add(htmlTemplateModel.templateCode);
    }

    value += "</select>";
    return value;
}

问题是存储在templateCode上的Html与当前的html文件冲突/合并 enter image description here 如何解决这个问题,我仍然希望那些Html值能够与Editor一起工作。 我尝试某种方式,如选择标记的值只是传递索引和函数:

@fucntion{
 private string getHtmlTemplate()
{
    string value = "<select id='htmlTemplate'><option value=''>Html Template</option>";
    int i = 0;
    foreach (AdminHtmlTemplateModel htmlTemplateModel in Model.GetAdminHtmlTemplates())
    {
        value += string.Format("<option value='{0}'>{1}</option>", i++, htmlTemplateModel.templateName);
    }

    value += "</select>";
    return value;
 }
}

<script>
$("#htmlTemplate").kendoDropDownList({
        change: function (e) {
            editor.exec("inserthtml", { value:@Model.GetAdminHtmlTemplateCodeByIndex(@:e.sender.value()) });
        }
    });
</script>

但它不起作用,因为我们无法将razor的jquery值传递给函数,对吗?

请帮帮我。感谢

1 个答案:

答案 0 :(得分:0)

谢谢你们, 经过几个小时的研究,我发现我可以使用片段来解决我的问题,而不是在Kendo UI MVC中使用CustomControl。

private List<AdminHtmlTemplateModel> getHtmlTemplate()
{
    ////string value = "<select id='htmlTemplate'><option value=''>Html Template</option>";
    ////int i = 0;
    ////foreach (AdminHtmlTemplateModel htmlTemplateModel in Model.GetAdminHtmlTemplates())
    ////{
    ////    //value += string.Format("<option value='{0}'>{1}</option>", htmlTemplateModel.templateCode, htmlTemplateModel.templateName);
    ////    value += string.Format("<option value='{0}'>{1}</option>", i++, htmlTemplateModel.templateName);
    ////    templateCodes.Add(htmlTemplateModel.templateCode);
    ////}

    ////value += "</select>";
    ////return value;
    return Model.GetAdminHtmlTemplates();
}

@(Html.Kendo().Editor().Enccode(false)
                                              .Name("EmailBody")
                                              .Tools(tools => tools
                                                  .ViewHtml()
//.CustomTemplate(ct => ct.Template(getHtmlTemplate())) // before
.Snippets(s => //after fixed
{ 
    foreach (var item in getHtmlTemplate())
   {
        s.Add(item.templateName, item.templateCode);
    }
})

这就是全部。它解决了我在Kendo UI MVC编辑器中插入HTML的问题。