2

与 ASP.Net 一起使用时,有哪些好的 jQuery 资源以及一些陷阱?

4

3 回答 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 回答