gpt4 book ai didi

asp.net - 动态设置 DataFormWebPart 中 ParameterBinding 的 DefaultValue

转载 作者:行者123 更新时间:2023-12-02 13:18:03 25 4
gpt4 key购买 nike

在 WSS 中的自定义 aspx 页面中,我使用带有 XSL 文件的 DataFormWebPart 来呈现一些数据。为了将值传递给 XSL,我使用参数绑定(bind)。具体来说,我需要像这样传入服务器主机 URL:

<ParameterBinding 
Name="HttpHost"
Location="CAMLVariable"
DefaultValue="http://hardcoded.com" />

这工作正常,但我想做的下一件事是动态获取主机名。因此,为了弄清楚如何从 SharePoint 获取它,我添加了以下绑定(bind):

<ParameterBinding 
Name="HttpHost"
Location="CAMLVariable"
DefaultValue='<%# SPContext.Current.Site.Url.Replace
(SPContext.Current.Site.ServerRelativeUrl, "") %>' />

现在解决问题了。如果在页面中的其他位置使用该代码,则该代码将按预期工作,但使用上述代码 SharePoint 报告:

Web Part Error: The 'ParameterBindings' property of 'WebPartPages:DataFormWebPart'does not allow child objects.

有人对此有何看法吗?

我已根据 SharePoint 2007: using ASP.NET server side code in your pages 启用服务器端代码

最佳答案

在尝试了各种操作 ParameterBindings 属性的方法但没有成功之后,我想到了如何使用 Location 属性获取其中的动态值。

ParameterBinding Location 属性指的是从何处获取值。类似this的文章“Control()”选项的提示。因此将参数绑定(bind)更改为:

<ParameterBinding
Name="HttpHost"
Location="Control(MyHttpHost, Text)"
DefaultValue="" />

并将以下代码添加到我的页面:

<asp:TextBox ID="MyHttpHost" runat="server" Visible="false" />
<script runat="server">
protected void Page_Load()
{
MyHttpHost.Text =
SPContext.Current.Site.Url.Replace(SPContext.Current.Site.ServerRelativeUrl, "");
}
</script>

...确实成功了!

为了从随附的 XSL 文件中获取参数值,我将 param 元素放入根元素中。参数名称属性必须与 ParameterBinding 的属性匹配:

<xsl:stylesheet ...>
...
<xsl:param name="HttpHost"/>

然后可以将该参数作为任何其他 XSL 变量进行引用。

关于asp.net - 动态设置 DataFormWebPart 中 ParameterBinding 的 DefaultValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/609943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com