Asp.net mvc @可编辑不包含HTML代码

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,这就是我们在使用单行

我们正在使用Sitecore 7和MVC+Glass.mapper构建一个新站点

奇怪的是,当我们使用
@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管道中默认做的。。。