2010-07-15 18 views

cevap

12

Not: Bir ana sayfa kullandığınız için "aspnetForm" görüyorsunuz.

İşte o hata için sorumlu kodu:

Bu thread içinde çözüm bulundu

... Kısacası

http://forums.asp.net/p/883974/929349.aspx

, bu yanıtın söz konusu bağlantıdan budur

public override string UniqueID 
{ 
     get 
     { 
      if (this.NamingContainer == this.Page) 
      { 
        return base.UniqueID; 
      } 
      return "aspnetForm"; 
     } 
} 

Gördüğünüz gibi, adlandırma kabı geçerli sayfadan farklı olduğunda (bir ana sayfa kullandığınızda gerçekleşen bir şey) e UniqueID özelliği "aspnetForm" değerini döndürür. Bu özellik, form etiketinde istemciye gönderilen name niteliğine işlenir. Yani, gerçekten ihtiyacınız varsa, htmlform'dan miras alarak kendi formunuzu oluşturabilir ve ardından UniqueID özelliğini veya Name özelliğini geçersiz kılabilirsiniz (bu daha iyi bir seçenek olabilir).

örneği özel HtmlForm sınıfı bu gibi olabilir:

public class Form : System.Web.UI.HtmlControls.HtmlForm 
{ 
    public Form() : base() { } 

    public override string UniqueID 
    { 
     get { 
      if (this.NamingContainer == this.Page) 
      { return base.UniqueID; } 

      return "f"; 
     } 
    } 
} 

Not: Kesinlikle başka bir şey "f" den formun adını değiştirebilir veya dinamik bir değerini okumak olabilir, gelen söylemek Bir web.config dosyası veya benzeri.

ve "aspnetForm" ile geçersiz kılmasını çerçeveyi önlemek için form etiketi üzerinde "ClientIDMode" özniteliğini "statik" Set böylece

<%@Register tagprefix="LA" Namespace="Mynamespace"%> 
... 
<LA:form runat="server" id="frm"> 
... 
</LA:form> 
+5

ASP.NET 4'te, bu davranış değişti. '

' denetimi adlandırma kabı içinde olsa bile, artık 'aspnetForm' için sabit kodlar. Aslında doğru müşteri kimliğine sahip. Başka bir ana sayfanın içine yerleştirilmiş bir ana sayfamızın olduğu bir duruma rastladım. Yuvalanmış ana sayfa, '' tanımlandığı ve aynı şeyin gerçekleştiği yerdir. – Sumo

4

gibi kullanılabilir. Bu saatlerce beni deli ediyordu.

+1

Öznitelik bilgisi olmayanlar için (benim gibi): Öznitelik ana sayfa parametrelerinde ayarlanmalıdır '<% @ Master ClientIDMode =" Statik "' .... Daha fazla bilgi için http://weblog.west-wind.com/posts/2009/Nov/07/ClientIDMode-in-ASPNET-40 – IvanH

0

@ Sumo'nun kabul edilen cevap altındaki yorumuyla aynı fikirdeyim ve aynı durumdaydım.

ASP.NET 4.0'da, ana sayfa, bir kimlik verilmediyse, oluşturulan html otomatik olarak bir tane atanacaktır. Aksi takdirde, işlenen html'nin özgün tanımlanmış kimliği olacaktır.