流程如下: 我在一个服务器控件的事件中动态向placeholder中添加了一些控件,之后使用jquery将整个form回发给服务器. 此时我在服务器端获取不到placeholder中的任何一个控件. 其他页面上原本有的控件可以获取. 
注: 动态加载控件后,页面源代码中可以看到.只是post回服务器placeholder.controls.count=0了江湖救急...请帮忙

解决方案 »

  1.   

    有没有给PlaceHolder一个UniqueID?
      

  2.   

    PlaceHolder本身并不会写入Html中的,Panel则会变为一个div
    控件视图是由ViewState保持的
      

  3.   

    額 UniqueID是做什么的?
    那么按照目前的流程怎么样才能实现我从后台可以获取到jquery post回去的这一堆控件呢.难道用request.form么
      

  4.   


    protected void Page_Load(object sender, EventArgs e)
    {
         var pnl1 = new PlaceHolder() { ID = "ph1" };
         form1.Controls.Add(pnl1);
         for (int i = 0; i < 10; i++)
             pnl1.Controls.Add(new TextBox() { ID = "txt" + i, Text = i.ToString() });
                
    }protected void btnAdd_Click(object sender, EventArgs e)
    {
        (form1.FindControl("ph1") as PlaceHolder).Controls.Cast<Control>().ToList().ForEach(
            c =>
        {
            Response.Write((c as TextBox).Text + ", ");
        });}
      

  5.   

    form1.Controls.Add(你的PlaceHolder);
      

  6.   

    額 可是我当前页面是在母版页里面的, 没有form.. 这个怎么办
      

  7.   

    子页就更好办了啊,你直接添加到 ContentPlaceHolder里面不就好了(你尽管把它也当成一个特殊一点的Holder就是了)
    建议你直接在ASPX里放一个空的PlaceHolder设置Visiable=false
    后台要用时再Visiable=true,然后往里面添加子控件
      

  8.   

    其实我还是没明白这个添加控件和我获取有什么关系.. 我只是在添加完成以后, 用jquery post回服务器以后获取不到了,不是添加不进去..
      

  9.   

    你看 用个简单的方法. 我在一个按钮里向一个panel中动态添加了1个控件. 用另外一个按钮调用jquery.ajaxSubmit() post了一个form回去. 在服务器端接受不到panel中的任何控件
      

  10.   

    谢谢回复, 我找到问题所在了. 我的控件加载事件在pageload事件之后,所有再次post回以后获取不到. 给个辛苦分~