Tru*_*uan 3 sitecore sitecore-dms
我为Sitecore的DMS功能创建了一个简单的演示站点.在sitecore内容中,我创建了这个结构:
首页
| -
个性化
.. | -HomeView1 .. | -HomeView2
HomeView1,HomeView2和Home具有相同的模板,其中只包含一个 Field: Display Text
现在我为主页创建Personalize,为它设置规则.规则是当前月份是8月,并将个性化内容指向HomeView1.当我做预览时,内容不会改变为HomeView1的文本.这是我的源代码:
public partial class HomePage : System.Web.UI.UserControl
{
protected Item currentItem;
protected void Page_Load(object sender, EventArgs e)
{
currentItem = Sitecore.Context.Item;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我在主页上的内容
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="HomePage.ascx.cs" Inherits="DMSDemo.sublayouts.HomePage" %>
<div><%= currentItem["Display Text"].ToString() %></div>
Run Code Online (Sandbox Code Playgroud)
我想知道为什么Sitecore.Context.Item
在应用个性化规则时不会返回正确的项目(HomeView2)?
请给我一些建议.提前致谢.
个性化时,上下文项目的数据源不会更改.所以你应该设置currentItem
为数据源.
这里有一些常见的代码来获取我从Matthew Dresser的博客中复制/粘贴的数据源:
var sublayout = this.Parent as Sitecore.Web.UI.WebControls.Sublayout;
if (sublayout != null)
{
Guid dataSourceId;
Sitecore.Data.Items.Item dataSource;
if (Guid.TryParse(sublayout.DataSource, out dataSourceId))
{
dataSource = Sitecore.Context.Database.GetItem(new ID(dataSourceId));
}
else
{
dataSource = Sitecore.Context.Database.GetItem(sublayout.DataSource);
}
}
Run Code Online (Sandbox Code Playgroud)
其他一些观点:
归档时间: |
|
查看次数: |
1150 次 |
最近记录: |