【发布时间】:2010-09-19 11:38:33
【问题描述】:
在与 ASP.Net 一起使用时,有哪些好的 jQuery 资源以及一些陷阱?
【问题讨论】:
标签: javascript jquery asp.net .net resources
在与 ASP.Net 一起使用时,有哪些好的 jQuery 资源以及一些陷阱?
【问题讨论】:
标签: javascript jquery asp.net .net resources
需要注意的一点是,如果您将 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;
}
【讨论】:
Rick Strahl's Blog 是一个很好的起点。他有很多 jQuery 帖子。
【讨论】:
ASP.Net 的自动生成 id 使得使用 jQuery 的选择器语法有些困难。
解决这个问题的两种简单方法:
$('[id$=myid]')
【讨论】: