我有一個控件,它上面有一個按鈕。所有按鈕都會將用戶重定向到另一個頁面。在這個控制上,我有另一個控制只顯示一些東西,沒有什麼幻想。當我點擊按鈕時,它什麼也不做。當我刪除或註釋掉其他控件時,按鈕事件就起作用。這是設計嗎?我不知道如何解決它或導致它。控制asp.net中的另一個控件禁用服務器端事件?
ControlA.ascx包含一個按鈕,像這樣的事件:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/Home.aspx");
}
ControlA.ascx包含它裏面的另一個控制,讓叫它ControlB.ascx。
當ControlB.ascx位於ControlA.ascx中時Button1單擊事件不會觸發,但當我將其移出或取出時,Button1事件觸發並轉到Home.aspx。這不僅發生在Button1上,如果我決定添加第二個按鈕併爲其創建事件,如果ControlB在ControlA中,則第二個按鈕事件也不會觸發。
ControlA.asx標記和代碼:
<div>
<asp:Button runat="server" ID="Button1" Text="Register 2"
onclick="Button1_Click" />
</div>
<div>
<uc:ControlB ID="ControlB" runat="server" />
</div>
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/Home.aspx");
}
ControlB.ascx標記:
<div>
<p>I am control B</p>
<p>
<sbi:SexyLinkButton ID="SexyLinkButton1" runat="server" Text="Go Home"
PostBackUrl="~/home.aspx" />
<asp:Button runat="server" ID="Button1" Text="Register 2"
onclick="Button1_Click" />
</p>
</div>
如前所述,的button1_Click不火,如果ControlB裏面ControlA,但如果我刪除ControlB或註釋掉它,Button1_Click觸發。
我想通一些東西:
ControlB.ascx有一個按鈕叫SexyButton(沒有創造這個,別人沒有,哈哈),當我刪除了從ControlB,ControlA的按鈕工作。我在controlB中放了一個asp.net按鈕,它工作,所以它與SexyButton控件有關。
如果我將一個asp.net按鈕與SexyLinkButton一起放在ControB上,ControlB上Button1的事件不起作用。
SexyLinkButton.cs - 如果我把PostBackUrl放在SexyLinkButton上,asp.net按鈕事件不會觸發。這裏是代碼的SexyLinkButton.cs:
public class SexyLinkButton : LinkButton
{
private List<string> Css = new List<string>();
public string IconCssClass { get; set; }
public SizeEnum Size { get; set; }
public SexyLinkButton()
{
Size = SizeEnum.Normal;
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if (!string.IsNullOrEmpty(CssClass)) Css.Add(CssClass); // User added Css
Css.Add("sbi-button"); // Standard Css for button
if (Size != SizeEnum.Normal) Css.Add(Size.ToString().ToLower()); // Size Css
// Nested spans per design and css requirements
HtmlGenericControl span1 = new HtmlGenericControl("span");
HtmlGenericControl span2 = new HtmlGenericControl("span");
// Nested span only for icon
if (!string.IsNullOrEmpty(this.IconCssClass))
{
HtmlGenericControl btnspan = new HtmlGenericControl("span");
btnspan.Attributes.Add("class", IconCssClass.Replace(".", string.Empty));
btnspan.InnerHtml = this.Text;
span2.Controls.Add(btnspan);
}
else
{
span2.InnerHtml = this.Text;
}
CssClass = string.Join(" ",Css.ToArray());
this.Text = "";
span1.Controls.Add(span2);
this.Controls.Add(span1);
base.Render(writer);
}
public enum SizeEnum
{
Normal,
Medium,
Large
}
}
無法在沒有看到您的代碼的情況下幫助您。 – womp 2010-03-24 17:28:06
具體來說,你想看到哪些部分? – Xaisoft 2010-03-24 17:31:44
如果您註釋掉第一個控件,您將如何導航到其他頁面? – Shoban 2010-03-24 17:33:24