Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# my aspx中的页面生命周期问题_C#_Asp.net_Viewstate_Page Lifecycle_Prerender - Fatal编程技术网

C# my aspx中的页面生命周期问题

C# my aspx中的页面生命周期问题,c#,asp.net,viewstate,page-lifecycle,prerender,C#,Asp.net,Viewstate,Page Lifecycle,Prerender,我试图做的是每当用户单击我的aspx中的静态链接按钮时生成链接按钮,如下所示: <asp:LinkButton ID="lnkSubWeb" runat="server" OnCommand="lbWeb_Click" /> private void LoadBreadCrumb(string relativeurl, string weburl) { var relativePath = relativeurl.Substring(1); var urlList

我试图做的是每当用户单击我的aspx中的静态链接按钮时生成链接按钮,如下所示:

<asp:LinkButton ID="lnkSubWeb" runat="server" OnCommand="lbWeb_Click" />
private void LoadBreadCrumb(string relativeurl, string weburl)
{

    var relativePath = relativeurl.Substring(1);
    var urlList = weburl.ParseUrl();
    var linkList = new List<string>(relativePath.Split('/'));
    for (int i = 0; i < linkList.Count; i++)
    {
        var link = UppercaseFirst(linkList[i]);
        var linkButton = new LinkButton
        {
            Text = link + " > ",
            CssClass = "breadcrumb",
            CommandArgument = urlList[i]
        };
        linkButton.Command += lbWeb_Click;
        bcHolder.Controls.Add(linkButton);

    }

}
它们看起来像这样:

<asp:LinkButton ID="lnkSubWeb" runat="server" OnCommand="lbWeb_Click" />
private void LoadBreadCrumb(string relativeurl, string weburl)
{

    var relativePath = relativeurl.Substring(1);
    var urlList = weburl.ParseUrl();
    var linkList = new List<string>(relativePath.Split('/'));
    for (int i = 0; i < linkList.Count; i++)
    {
        var link = UppercaseFirst(linkList[i]);
        var linkButton = new LinkButton
        {
            Text = link + " > ",
            CssClass = "breadcrumb",
            CommandArgument = urlList[i]
        };
        linkButton.Command += lbWeb_Click;
        bcHolder.Controls.Add(linkButton);

    }

}
LoadBreadCrumb()
方法如下所示:

<asp:LinkButton ID="lnkSubWeb" runat="server" OnCommand="lbWeb_Click" />
private void LoadBreadCrumb(string relativeurl, string weburl)
{

    var relativePath = relativeurl.Substring(1);
    var urlList = weburl.ParseUrl();
    var linkList = new List<string>(relativePath.Split('/'));
    for (int i = 0; i < linkList.Count; i++)
    {
        var link = UppercaseFirst(linkList[i]);
        var linkButton = new LinkButton
        {
            Text = link + " > ",
            CssClass = "breadcrumb",
            CommandArgument = urlList[i]
        };
        linkButton.Command += lbWeb_Click;
        bcHolder.Controls.Add(linkButton);

    }

}
private void LoadBreadCrumb(字符串relativeurl、字符串weburl)
{
var relativePath=相对子串(1);
var urlist=weburl.ParseUrl();
var linkList=新列表(relativePath.Split('/');
for(int i=0;i”,
CssClass=“面包屑”,
CommandArgument=urlList[i]
};
linkButton.Command+=lbWeb\u单击;
bcHolder.Controls.Add(链接按钮);
}
}
因此,基本上,这些代码按照我想要的方式生成链接按钮,但是点击这些按钮不会被触发

另一方面,我试图将此代码放入页面加载,但效果不好,总是落后一步。链接按钮不会在点击事件后显示,但它是在页面加载和点击事件之后生成的


感谢您在页面生命周期经过事件处理点后创建的
LinkButton
实例提供的任何帮助。因此,在应该调用事件处理程序时,
页面中实际上没有
LinkButton
实例,因此无法调用

您应该在
PreInit
事件的上下文中创建所有动态控件(即调用
LoadBreadCrumb
)。请参阅ASP.NET页生命周期



旁注:就SharePoint中的URL路径构造选项而言,构建面包屑的方式有点次优。您应该考虑到,有一些托管路径不直接对应于任何网站集(
SPSite
),并且沿着路径有子网站(
SPWeb
)嵌套在
SPSite
的根网站中。当前,通过使用托管路径或子网站url的参数调用
新SPSite(url)
,你会得到一个即时封闭的网站集,它反过来表示一个不同于
URL

的URL。你有没有尝试过断点,看看有什么东西被击中了,或者看起来什么都没有发生?是的,lbWeb\u点击没有被触发。有什么解决办法吗?是否可以确保在加载页面之前触发lbWeb\u点击?是的,我知道这一点,对于这个解决方案,它是有效的。ParseUrl()是一个自定义的扩展方法,可以更正它。我将尝试PreInit事件,应该是这样吗?受保护的无效页面\u PreInit(对象发送方,EventArgs e){//code}我尝试使用PreInit,但现在似乎没有生成链接按钮。可能是因为PreInit在我的click事件之前执行?确定它将在事件处理程序之前执行。这就是重点!您不能首先执行尚未初始化的事件处理程序。您应该阅读一些关于ASP.NET页面生命周期和回发处理的教程。