Asp.net mvc MVC5上作为字符串的Html

Asp.net mvc MVC5上作为字符串的Html,asp.net-mvc,razor,Asp.net Mvc,Razor,目前,我将Html存储在数据库中,并填充到Dropdownlist中,如下所示,我在Razor中使用@Function: private string getHtmlTemplate() { string value = "<select id='htmlTemplate'><option value=''>Html Template</option>"; int i = 0; foreach (AdminHtmlT

目前,我将Html存储在数据库中,并填充到Dropdownlist中,如下所示,我在Razor中使用@Function:

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文件冲突/合并 如何解决这个问题,我仍然希望这些Html值与编辑器一起工作。 我尝试了一些方法,比如只传递索引和函数的选项标记的值:

@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值传递给函数,对吗

请帮帮我。谢谢

谢谢各位, 经过几个小时的研究,我发现我可以使用代码片段来解决我的问题,而不是在KendoUIMVC中使用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的问题。

为什么不替换为“?将模板放在一个局部视图中,并通过JSHave you every try@Html.Encode加载?我发现我可以使用javascript escape/unescape在Razor中编码/解码Html值,但主要问题是在使用KendoUI MVC的CustomControl时编辑器,它不允许在编辑器中插入Html。谢谢你们的回复。