Asp.net mvc @可编辑不包含HTML代码
我们正在使用Sitecore 7和MVC+Glass.mapper构建一个新站点 奇怪的是,当我们使用Asp.net mvc @可编辑不包含HTML代码,asp.net-mvc,sitecore,sitecore7,glass-mapper,Asp.net Mvc,Sitecore,Sitecore7,Glass Mapper,我们正在使用Sitecore 7和MVC+Glass.mapper构建一个新站点 奇怪的是,当我们使用@Editable(x=>x.SectionTitle)时,在编辑模式下,SectionTitle字段的内容得到HtmlEncoded,但不是在预览或正常模式下。(因此,如果标题字段中有“”,则在编辑模式下输出为H1,但在正常和预览模式下输出为) 但是,如果我们使用@HTML.Sitecore().Field(“SectionTitle”),它总是得到HtmlEncoded,这就是我们在使用单行
@Editable(x=>x.SectionTitle)
时,在编辑模式下,SectionTitle
字段的内容得到HtmlEncoded
,但不是在预览或正常模式下。(因此,如果标题字段中有“”,则在编辑模式下输出为H1
,但在正常和预览模式下输出为
)
但是,如果我们使用@HTML.Sitecore().Field(“SectionTitle”)
,它总是得到HtmlEncoded,这就是我们在使用单行文本字段时所寻找的行为
这是玻璃上的小毛病吗
Mike,这是cshtml代码:
<section>
<H2> @Html.Sitecore().Field("SectieTitel")</H2>
<h2>@Editable(x => x.SectieTitel)</h2>
@Html.Sitecore().DynamicPlaceholder("sectieInhoud")
</section>
@Html.Sitecore()字段(“sectitel”)
@可编辑(x=>x.sectitel)
@Html.Sitecore().DynamicLaceHolder(“sectieInhoud”)
我们使用T4和TDS生成模型,这是生成的Sectie类:
namespace XXXXXXXXXXXXX
{
public interface ISectie : IGlassItem // , ITagging
{
/// <summary>
/// The SectieTitel field.
/// <para></para>
/// <para>Field Type: Single-Line Text</para>
/// <para>Field ID: 2e364ec5-f0d4-4f16-baa3-fa9207f89cf6</para>
/// <para>Custom Data: </para>
/// </summary>
string SectieTitel {get; set;}
}
[SitecoreType(TemplateId="1760c3c6-a623-404a-98be-a0d4335a03cc")]
public partial class Sectie : GlassItem, ISectie
{
private string _sectieTitel;
/// <summary>
/// The SectieTitel field.
/// <para></para>
/// <para>Field Type: Single-Line Text</para>
/// <para>Field ID: 2e364ec5-f0d4-4f16-baa3-fa9207f89cf6</para>
/// <para>Custom Data: </para>
/// </summary>
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Team Development for Sitecore - GlassItem.tt", "1.0")]
[SitecoreField("SectieTitel")]
public virtual string SectieTitel
{
get { return _sectieTitel; }
set { _sectieTitel = value; }
}
private object /* UNKNOWN */ _tags;
/// <summary>
/// The Tags field.
/// <para></para>
/// <para>Field Type: Multilist with Search</para>
/// <para>Field ID: 3a837ce8-7a1b-4cbf-8be9-9cebbdf1c48a</para>
/// <para>Custom Data: </para>
/// </summary>
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Team Development for Sitecore - GlassItem.tt", "1.0")]
[SitecoreField("Tags")]
public virtual object /* UNKNOWN */ Tags
{
get { return _tags; }
set { _tags = value; }
}
public static string TemplateId { get { return "1760c3c6-a623-404a-98be-a0d4335a03cc"; } }
}
namespace xxxxxxxxxxxx
{
公共接口ISectie:IGlassItem/,ITag
{
///
///宗派特球场。
///
///字段类型:单行文本
///字段ID:2e364ec5-f0d4-4f16-baa3-fa9207f89cf6
///自定义数据:
///
字符串sectitel{get;set;}
}
[SitecoreType(TemplateId=“1760c3c6-a623-404a-98be-a0d4335a03cc”)]
公共部分类扇区:GlassItem,ISectie
{
私有字符串_sectitel;
///
///宗派特球场。
///
///字段类型:单行文本
///字段ID:2e364ec5-f0d4-4f16-baa3-fa9207f89cf6
///自定义数据:
///
[global::System.CodeDom.Compiler.GeneratedCodeAttribute(“Sitecore团队开发-GlassItem.tt”、“1.0”)]
[SitecoreField(“Sectiettel”)]
公共虚拟字符串扇区
{
获取{return\u sectitel;}
设置{u sectitel=value;}
}
私有对象/*未知*/\u标记;
///
///标记字段。
///
///字段类型:带搜索的多列表
///字段ID:3a837ce8-7a1b-4cbf-8be9-9cebbdf1c48a
///自定义数据:
///
[global::System.CodeDom.Compiler.GeneratedCodeAttribute(“Sitecore团队开发-GlassItem.tt”、“1.0”)]
[SitecoreField(“标签”)]
公共虚拟对象/*未知*/标记
{
获取{return\u tags;}
设置{u tags=value;}
}
公共静态字符串TemplateId{get{return“1760c3c6-a623-404a-98be-a0d4335a03cc”;}
}
}
在cshtml中,您可以看到我使用了Sitecore MVC字段和glass方式。Glass不输出htmlencoded字符串,而sitecore MVC在预览和普通中输出
欧文我写了一篇博客文章,详细介绍了如何解决这个问题 我将在下一个Glass.Mapper.Sc版本中添加EncodedString类型。
谢谢你的建议。我发了一篇博客文章,详细介绍了如何解决这个问题 我将在下一个Glass.Mapper.Sc版本中添加EncodedString类型。
感谢您的建议。玻璃不会通过渲染场管道,除非您通过“可编辑”。我想这就是原因。嗨,Jens,如果确实是这样的话,那将是一个完全可行的解释……玻璃不会通过渲染场管道,除非你通过编辑。我想这就是原因。嗨,Jens,如果真的是这样的话,那将是一个完全可行的解释……你也能发布模型吗?Mike,试过你的代码,但问题是一样的。我们正在运行玻璃3.08。Jens的评论可能是答案吗?Mike,在GlassHTML.cs文件中,您检查我们是否处于编辑模式,如果没有,字段将在不使用HTML编码的情况下呈现。问题是,当我改变这一点时,Glass HTML对所有字段进行编码,所以实际上应该进行字段检查,只对单行和多行文本字段进行HTMLencode,但我还没有弄清楚如何做到这一点:-)您尝试使用的字段类型是什么?我使用的是单行文本,但也应该对多行文本进行编码。这也是Sitecore在GetTextFieldValue Renderfield管道中默认做的事情…你也可以发布模型吗Mike,尝试了你的代码,但问题相同。我们正在运行玻璃3.08。Jens的评论可能是答案吗?Mike,在GlassHTML.cs文件中,您检查我们是否处于编辑模式,如果没有,字段将在不使用HTML编码的情况下呈现。问题是,当我改变这一点时,Glass HTML对所有字段进行编码,所以实际上应该进行字段检查,只对单行和多行文本字段进行HTMLencode,但我还没有弄清楚如何做到这一点:-)您尝试使用的字段类型是什么?我使用的是单行文本,但也应该对多行文本进行编码。这也是Sitecore在GetTextFieldValue Renderfield管道中默认做的。。。