我有一个webpart,以指定的格式呈现随机列表项(来自任何列表和列表类型).我希望webpart中显示的项目链接到他们的ListItem详细信息视图.但是,我没有看到列表本身的属性会告诉我哪个视图是列表的默认DETAIL视图(即博客列表详细信息是Post.aspx).这是否来自列表定义?我如何以编程方式获取该信息?我试图避免基于列表类型对任何列表信息进行硬编码.
看看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
到查询字符串也是一种很好的做法,这样当用户单击编辑或显示表单上的取消/关闭按钮时,用户将被重定向回他们离开的页面.