【问题标题】:Why can't I do this in asp.net webforms?为什么我不能在 asp.net 网络表单中执行此操作?
【发布时间】:2011-12-31 02:40:33
【问题描述】:

我的 aspx 页面中有一个 <asp:Image ID="imgBanner1" runat="server"/> 控件,然后在后面的代码中我有这个测试代码:

Image img = new Image();
img.ImageUrl = "~/img/home/home1.jpg";
//...

imgBanner1 = img;  //<--

然后当我刷新页面时,&lt;img&gt;src 值是空白的,并且图片没有出现。我试图将 sn-p 放入 Page_Load、Page_Init、Page_PreInit 事件中,但仍然不起作用。我该如何解决这个问题?我需要在我的页面中分配一些其他类的自定义控件...感谢您的回答!

编辑:如果我这样做,它会起作用:

imgBanner1.ImageUrl = img.ImageUrl;
//...

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    如果您想将控件动态添加到页面中,请在其上添加占位符(或容器 - 面板等)控件并在 page_init/page_load 中编写以下代码。欲了解更多信息,请阅读 MSDN 文章 - How to: Add Controls to an ASP.NET Web Page Programmatically?

    Image img = new Image();
    img.ImageUrl = "~/img/home/home1.jpg";
    PlaceHolder1.Controls.Add(img);
    

    ImageUrl是一个字符串属性,你必须设置字符串图像url。

    【讨论】:

    • +1 虽然我很确定这应该在 Page_Init 中以避免 ViewState 问题。
    【解决方案2】:

    您不需要自己实例化新图像。此代码作为 page.designer.cs 代码隐藏/旁边文件中的受保护字段自动生成。您需要做的就是拥有:

    imgBanner1.ImageUrl = "~/img/home/home1.jpg"; 
    

    Page_Load,一切都会好起来的。

    【讨论】:

    • 是的,我知道,但是我在另一个类中创建了另一个 Image 控件,并且一个方法返回该对象,例如一个类 PageImage : System.Web.UI.WebControls.Image 添加了属性。
    • 现在你这么说,然后编辑你的问题。叹。好吧,听听上面的 AVD - 将控件动态添加到 Page_Init 中的占位符控件。
    • 不,我从一开始就说“我需要在我的页面中分配一些其他类的自定义控件”我想你可以检查编辑历史记录。顺便说一句,感谢您的回答.. +1 :)
    猜你喜欢
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2019-01-07
    相关资源
    最近更新 更多