我有一个webpart,它以指定的格式呈现随机列表项(来自任何列表和列表类型)。我希望webpart中显示的项目链接到他们的ListItem详细信息视图。但是,我没有看到列表本身的属性会告诉我哪个视图是列表的默认DETAIL视图(即博客列表详细信息是Post.aspx)。这是否来自列表定义?我如何以编程方式获取该信息?我试图避免基于列表类型对任何列表信息进行硬编码。
答案 0 :(得分:6)
查看SPList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url
。
我认为这就是你要找的东西。您需要在查询字符串上附加SPListItem.ID,以便它知道要显示的列表项。
using (SPWeb myWeb = GetMyWeb()) // GetMyWeb gets a reference to a SPWeb object
{
SPList myList = GetMyList(myWeb); // GetMyList gets a reference to a SPList object
SPListItem myItem = GetMyListItem(myList); // GetMyListItem gets a reference to a SPListItem object
string url = String.Format("{0}/{1}?ID={2}",
myWeb.Url,
myList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url,
myItem.ID);
}
将&Source=/url/to/current/page
附加到查询字符串也是一种很好的做法,这样当用户点击编辑或显示表单上的取消/关闭按钮时,用户将被重定向回他们离开的页面。