代码之家  ›  专栏  ›  技术社区  ›  netseng

为什么sharepoint将url从其他web应用程序更改为当前web应用程序以及如何避免

  •  0
  • netseng  · 技术社区  · 15 年前

    我正在使用sharepoint对象模型开发一个web部件,它从不同web应用程序的列表中获取列表项,我做到了

    protected override void CreateChildControls()
    {
        SPSite site = new SPSite("http://myhost/");
        ListViewByQuery lview = new ListViewByQuery();
        SPWeb web = site.OpenWeb();
        lview.List = web.Lists["Tasks"];
        lview.Query= new SPQuery(lview.List.Views["All Tasks"]);    
        this.Controls.Add(lview);
    }
    

    当我在Web应用程序中使用我的Web部件时 http://myhost/ ,我将在中使用它 http://mysite ,它将所有的url替换为“myhost”为“mysite”,为什么shrepoint要这么做,以及如何在它上面行走。

    3 回复  |  直到 6 年前
        1
  •  2
  •   Community Dunja Lalic    7 年前

    我已经在同一个服务器上测试了不同的web应用程序的代码查询,并且可以重现您描述的问题。这是因为sharepoint呈现的是页面的相对url,而不是绝对url。因此,它错误地链接到当前的web应用程序。

    不幸的是,根据Reflector,SharePoint实际使用此呈现所做的工作是模糊的似乎Microsoft不打算将此控件用于其他Web应用程序。在这种情况下,我解决问题的方法是使用jquery( examples on SO , End User SharePoint )或用于更正url的http模块。

    (请注意,两者都存在可支持性问题……Microsoft可能会在将来的Service Pack或发行版中更改此控件的输出方式,这将破坏您的自定义代码。)

    编辑: 根据Kit的评论更正。

    编辑2: 重写。

        2
  •  1
  •   Jeff    15 年前

    看看这篇文章( link )关于内容怪物Web部件它也许能解决你的问题,或者至少给你一个主意。

        3
  •  0
  •   Paul-Jan    15 年前

    正如alex所写,您不能使用sharepoint对象模型从其他网站集(即当前网站集)获取数据。我建议使用内置的webservices(更具体地说,是 GetListItems 方法来检索数据。