与 ASP.Net 一起使用时,有哪些好的 jQuery 资源以及一些陷阱?
问问题
930 次
3 回答
5
ASP.Net 的自动生成 id 使得使用 jQuery 的选择器语法有些困难。
解决此问题的两种简单方法:
- 使用 css 类而不是 id 搜索对象
- 您可以使用以下方法清除 uniqueid 垃圾:
$('[id$=myid]')
于 2008-10-27T22:26:40.467 回答
3
需要注意的一点是,如果您将 WebMethods 用于 Ajax,出于安全原因,响应值将被包装在一个名为“d”的对象中。您必须解开该值,这通常不是问题,除非您使用依赖于 jquery ajax 的组件(例如 jqGrid 插件)。为了解决这个问题,我只是更改了网格中调用 ajax 的代码并插入了一些代码来解包。我确实计划向 jquery 团队发送一些代码,看看它是否可以被未来的版本接受。
如前所述,接下来的事情是 ids。如果您有时间和兴趣,我实际上将所有 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;
}
于 2008-10-27T22:57:27.330 回答
1
Rick Strahl 的博客是一个很好的起点。他有很多 jQuery 帖子。
于 2008-10-27T22:37:45.263 回答