Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有方法手动设置ContentView模板化服务器控件上的内容项?_C#_Ektron - Fatal编程技术网

C# 是否有方法手动设置ContentView模板化服务器控件上的内容项?

C# 是否有方法手动设置ContentView模板化服务器控件上的内容项?,c#,ektron,C#,Ektron,我看到的新ContentView模板化服务器控件的示例都在前端使用ContentModelSource服务器控件。如果我已经创建了一个方法,该方法使用FrameworkAPI,在criteria对象中设置各种奇怪的过滤器,并返回一个列表,该怎么办。是否有一种方法可以将该内容数据列表传递到ContentView服务器控件中,并完全跳过页面上任何类型的ContentModelSource控件?使用ContentView时必须使用ContentModelSource 但是,您可以使用现有的框架API命

我看到的新ContentView模板化服务器控件的示例都在前端使用ContentModelSource服务器控件。如果我已经创建了一个方法,该方法使用FrameworkAPI,在criteria对象中设置各种奇怪的过滤器,并返回一个
列表
,该怎么办。是否有一种方法可以将该内容数据列表传递到ContentView服务器控件中,并完全跳过页面上任何类型的ContentModelSource控件?

使用ContentView时必须使用ContentModelSource

但是,您可以使用现有的框架API命令获取所需的内容,然后用C#代码将内容ID传递给ContentModelSource控件:

这将使用所有内容ID填充ContentModelSource


或者,您可以使用常规的.Net控件(如中继器)来写出内容项结果。

我对这个问题做了大量深入研究,发现了以下几点:

  • 确实,使用ContentView服务器控件需要ContentModelSource。如果您尝试不使用.NET异常,将得到一个丑陋的.NET异常
  • 您不需要实际从该ContentModelSource获取数据
  • 可以使用ContentView控件上的
    SelectMethod
    属性设置数据。将其设置为页面上返回
    ContentData
    List
    的公共方法的名称
  • 或者,您可以等待页面加载事件,然后设置
    Model.ContentList
    属性。如果您试图在Page_Init期间设置.NET异常(我认为是空引用),则会得到一个.NET异常
ASPX:

protected void Page_Load(object sender, EventArgs e)
{
    var cm = new ContentManager();

    var criteria = new ContentCriteria();
    criteria.AddFilter(ContentProperty.Type, CriteriaFilterOperator.EqualTo, EkEnumeration.CMSContentType.Content);

    cvPrimary.Model.ContentList = cm.GetList(criteria);
}

C#:

protected void Page_Load(object sender, EventArgs e)
{
    var cm = new ContentManager();

    var criteria = new ContentCriteria();
    criteria.AddFilter(ContentProperty.Type, CriteriaFilterOperator.EqualTo, EkEnumeration.CMSContentType.Content);

    cvPrimary.Model.ContentList = cm.GetList(criteria);
}