gpt4 book ai didi

c# - 将 linq 扩展到 sharepoint 以发布 HTML 字段

转载 作者:行者123 更新时间:2023-11-30 13:04:29 25 4
gpt4 key购买 nike

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

Extending the Object-Relational Mapping

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

/// <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”的片段:

    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. 有没有办法从内部使用 GetFieldValueAsText 方法Web 部件或者是将值存储在自定义中的方法以后访问的属性是否可接受?

最佳答案

  1. 您正在将 item[CONTENT_FIELDtesthtml] 的字段值转换为 HtmlField 类型。但是 HtmlField 表示字段的类型而不是字段值的类型。因此 HtmlField html 将被分配 null。检查这个MSDN page用于所有发布字段类型和值类型的引用。
    我不确定 HtmlField 的字段值类型是什么。可能只是 string
    所以你应该安全地将它转换为字符串:

    string html = Convert.ToString(item[CONTENT_FIELDtesthtml]);
  2. 我认为将值存储在属性中是可行的方法。通过这种方式,您可以实现数据层和表示层的分离。

关于c# - 将 linq 扩展到 sharepoint 以发布 HTML 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8783493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com