获取sharepoint讨论板地址
之前碰到,新建讨论板之后,要在另一个site中,访问讨论详细内容,于是找讨论主题地址,以下是在用的方法
通过事件监听(监听事件的创建,请参考MSDN这个例子),讨论板建立之后,获取其地址,目前有手动拼接,如果有更好的方法请留意告之;
新建名为text的讨论板,地址例如为:
http://win-l8muo3ci7hb/sites/Project/Lists/List4/Flat.aspx?
RootFolder=%2Fsites%2FProject%2FLists%2FList4%2Ftest&
FolderCTID=0x012002000011AC68D38FA24BAE274F76B33E6338
其中,
RootFolder参数:经过了URL转码之后的,对其反转码的结果是
RootFolder=/sites/Project/Lists/List4/test
它就是讨论list地址+讨论主题。
FolderCTID参数:偿试删除之后也可以访问到讨论板,也找不到它意思,所以就不加了。
/// <summary>
/// An item was added.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
if (properties.ListTitle == "项目探讨")
{
try
{
using (SPWeb web = properties.OpenWeb())
{
string userName = web.CurrentUser.Name;
string projectName = web.Title;
string projectUrl = web.Url;
SPList list = web.Lists[properties.ListId];
string title = list.Fields.GetField("主题").InternalName;
string titleValue = properties.ListItem[title].ToString();
//获取讨论板link
//properties.List.DefaultDisplayFormUrl 为显示list的默认地址,可找到讨论板list地址;
string tmpUrl = properties.List.DefaultDisplayFormUrl.Substring (0, properties.List.DefaultDisplayFormUrl.LastIndexOf('/'));
string RootFolder = tmpUrl + "/" + titleValue;
//url转码,避免含中文时地址出错
RootFolder = System.Web.HttpUtility.UrlEncode(RootFolder);
string discussionUrl = "http://" + Environment.MachineName + tmpUrl + "/Flat.aspx?RootFolder=" +RootFolder;
}
}
catch (Exception ex)
{
}
}
}