2008-10-27 78 views

回答

3

有一點需要注意的是,如果您使用WebMethods進行Ajax,則出於安全原因,響應值將返回包裝在名爲'd'的對象中。你將不得不打開那個值,這通常不是問題,除非你使用了一個依賴於jQuery Ajax的組件(例如jqGrid插件)。爲了解決這個問題,我只是更改了網格中調用ajax的代碼並插入了一些代碼來展開。我計劃向jquery組員發送一些代碼,以查看它是否可以被未來版本接受。

如前所述,接下來的事情是ID。如果你有時間和興趣,其實我的子類的所有HTML控件,使參與NamingContainer可選的,就像這樣:

protected override void RenderAttributes(HtmlTextWriter writer) { 
    HtmlControlImpl.RenderAttributes(this, writer); 
} 

然後輔助對象(以防止在每個對象編寫相同的代碼)看起來像這樣:

public static void RenderAttributes(IFormControl cntrl, HtmlTextWriter writer) { 
    if (cntrl.ID != null) { 
     cntrl.Attributes.Remove("id"); 
     cntrl.Attributes.Remove("name"); 
     writer.WriteAttribute("id", cntrl.RenderedId); 
     writer.WriteAttribute("name", cntrl.RenderedName); 
    } 
    cntrl.Attributes.Render(writer); 
    HtmlContainerControl containerCntrl = cntrl as HtmlContainerControl; 
    if (containerCntrl == null) 
     writer.Write(" /"); 
} 

public static string GetRenderedId(IFormControl cntrl) { 
    return cntrl.UseNamingContainer ? cntrl.ClientID : cntrl.ID; 
} 

public static string GetRenderedName(IFormControl cntrl) { 
    return cntrl.UseNamingContainer ? cntrl.UniqueID : cntrl.ID; 
} 
5

ASP.Net的自動生成的ID使用jQuery的選擇器語法有點困難。

兩種簡單的方法解決此問題:

  • 搜索使用,而不是ID
  • CSS類你可以剔除掉UNIQUEID垃圾與對象:$('[id$=myid]')
+0

感謝關於$('[id $ = myid]')的註釋。我終於可以擺脫我的「獨一無二的垃圾」! – EndangeredMassa 2008-10-27 22:32:36