Asp.net mvc MVC5上作为字符串的Html
目前,我将Html存储在数据库中,并填充到Dropdownlist中,如下所示,我在Razor中使用@Function: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
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。谢谢你们的回复。