首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将linq扩展到sharepoint,用于发布HTML字段

将linq扩展到sharepoint,用于发布HTML字段
EN

Stack Overflow用户
提问于 2012-01-09 03:04:46
回答 1查看 1.1K关注 0票数 4

我已经创建了一个分部类来扩展默认的html类来处理发布html字段。如下所述:

扩展对象-关系映射

来自public partial class RelatedLinksItem : Item, ICustomMapping的片段

代码语言:javascript
复制
/// <summary>
/// Read only data is retrieved in this method for each extended SPMetal field
/// Used to Read - CRUD operation performed by SPMetal
/// </summary>
/// <param name="listItem"></param>
[CustomMapping(Columns = new string[] { CONTENT_FIELDtesthtml, CONTENT_FIELDLink })]
public void MapFrom(object listItem)
{
    SPListItem item = (SPListItem)listItem;

    // link
    this.ContentLink = item[CONTENT_FIELDLink] as LinkFieldValue;

    // html (does NOT work)
    HtmlField html = item[CONTENT_FIELDtesthtml] as HtmlField; // this returns null

    // html (does work)
    HtmlField html2 = (HtmlField)item.Fields.GetFieldByInternalName(CONTENT_FIELDtesthtml); // this returns object
    this.Contenttesthtml = html2;
    this.TestHtml = html2.GetFieldValueAsText(item[CONTENT_FIELDtesthtml]); // set property for rendering html
}

来自“webpart”的片段:

代码语言:javascript
复制
    protected override void CreateChildControls()
    {
        using (OrganisationalPoliciesDataContext context = new OrganisationalPoliciesDataContext(SPContext.Current.Web.Url))
        {
            var results = from links in context.RelatedLinks
                          select links;

            foreach (var link in results)
            {
                // render link
                Controls.Add(new LiteralControl(string.Format("<p>Link: {0}</p>", link.ContentLink)));

                // render html
                Controls.Add(new LiteralControl(string.Format("<p>HTML: {0}</p>", link.TestHtml)));
            }
        }
    }

两个问题:

  1. 为什么HtmlField html = item[CONTENT_FIELDtesthtml] as HtmlField;返回null,但是item.Fields.GetFieldByInternalName工作正常?
  2. 是否有一种在way部件中使用GetFieldValueAsText方法的方法,还是将值存储在自定义属性中以供以后访问的方法可接受?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-09 09:10:45

  1. 您正在将item[CONTENT_FIELDtesthtml]的字段值转换为HtmlField类型。但是HtmlField代表字段的类型,而不是字段值的类型。因此,HtmlField html将与null一起分配。检查此MSDN页面以获得所有发布字段类型和值类型的引用。 我不确定HtmlField的字段值类型是什么。可能就是string。 因此,您应该可以安全地将其转换为string: 字符串html = Convert.ToString(itemCONTENT_FIELDtesthtml);
  2. 我认为将值存储在属性中是可行的方法。这样您就可以实现数据层和表示层的分离。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8783493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档