0


我无法获取定义自定义编辑器的当前项目。
我需要获取当前页面(文章)的 ID,但Sitecore.Context.Item返回 null。如何从当前项目中获取 id?

UPD:
编辑器 aspx 文件正在测试工作

<asp:Repeater ID="Comments" runat="server">
 <ItemTemplate>
    <div>
        <b><%# DataBinder.Eval(Container.DataItem, "Name")%></b>
        <p><%# DataBinder.Eval(Container.DataItem, "Text")%></p>         
    </div>
 </ItemTemplate>
 <SeparatorTemplate><hr /></SeparatorTemplate>
</asp:Repeater>

cs (Page_Load):

protected void Page_Load(object sender, EventArgs e)
{
    var currentItem = Sitecore.Context.Database.GetItem(Request.QueryString["id"]);

    using (var connection = new SqlConnection(@"..."))
    {
        var query = "SELECT Name, Text from dbo.Comments " +
            "WHERE Article = @CurrentItemId";
        var command = new SqlCommand(query, connection);
        command.Parameters.Add("@CurrentItemId", System.Data.SqlDbType.UniqueIdentifier).Value = currentItem.ID.ToGuid();
        try
        {
            connection.Open();
            var list = new List<Comment>();
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                list.Add(new Comment(reader[0].ToString(), reader[1].ToString()));
            }

            Comments.DataSource = list;
            Comments.DataBind();

            reader.Close();
        }
        finally
        {
            connection.Close();
        }
    }
}
4

2 回答 2

1

您需要从查询字符串中获取当前项目 ID 和当前语言

// get the current Item and language
string itemID = Request.QueryString["id"];
Language language = LanguageManager.GetLanguage(Request.QueryString["la"]);

if (language != null && !string.IsNullOrEmpty(itemID))
{
    Database masterDB = Sitecore.Configuration.Factory.GetDatabase("master");
    CurrentItem = masterDB.GetItem(itemID, language);
}
于 2013-05-23T13:34:49.353 回答
0

我找到了这个项目的 id。您可以从 QueryStrings of tour Request: 中获取 item_id
Request.QueryString["id"]

我没有足够的找到答案,因为 QueryStrings 中的项目 id 得到格式{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}

于 2013-05-23T11:40:50.620 回答