Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery & ASP.Net Resources & Gotchas [closed]

What are some good jQuery Resources along with some gotchas when using it with ASP.Net?

like image 664
Armstrongest Avatar asked Jan 22 '26 21:01

Armstrongest


2 Answers

ASP.Net's autogenerated id's make using jQuery's selector syntax somewhat difficult.

Two easy ways around this problem:

  • Search for objects using css class instead of id
  • You can weed out the uniqueid garbage with: $('[id$=myid]')
like image 64
Adam Lassek Avatar answered Jan 24 '26 11:01

Adam Lassek


One thing to note is that if you use WebMethods for Ajax, the response values will be returned wrapped in an object named 'd' for security reasons. You will have to unwrap that value, which is usually not a problem, unless you are using a component (such as the jqGrid plugin) that relies upon jquery ajax. To get around that, I just changed the code in the grid that called ajax and inserted a bit of code to unwrap. I do plan on sending in some code to the jquery crew to see if it can be accepted for future versions.

The next thing, as was mentioned previously, is the ids. If you have the time and inclination, I actually subclassed all of the HTML controls to make participating in the NamingContainer optional, like this:

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

And then the helper object (to prevent writing the same code in each object) looks like this:

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;
}
like image 37
tsimon Avatar answered Jan 24 '26 11:01

tsimon