Sitter och funderar på alternativ till att använda UpdatePanels eftersom dom dels har massa buggar (speciellt i samband med ACC) och dels inte är särskilt prestandavänliga (åtminstone vad jag hört). Har helt slutat med alla kontroller som genererar en massa mumbo jumbo kod som man inte har full kontroll över... avskyr allt som VWD slänger in på sidan med alla script-taggar hit och dit. Finns det någon bra guide för hur man kommer igång med det? Har ingen aning om vad en "Generic handler" är för något om jag ska vara ärlig. "Generic handler" är en .NET-sida som i stort sett levererar en sida utan <html> och <head>-kod... Du skriver vanlig .NET-kod i den. Det är en så clean sida som det bara går att få. När man kör "Add new Item..." i VWD så finns den att välja. Kollar man på sidan så står det "webhandler". Det borde du kunna söka på. Tackar! Nu börjar jag få koll på det här tror jag. Formatet på datan beror på vad du vill att det ska returnera. Ska du returnera en siffra och uppdatera ett viss HTML-kontroll så kanske det är överdrivet med json. Hittade denna artikel: Jag har använt ASP.NET AJAX PageMethods en del, tycker att det funkar bra. Det är samma princip som det som Jonas S postade ovanför, fast man slipper skriva en Web Service. Man gör helt enkelt en [WebMethod] på sidan, sedan i Javascript anropas den med PageMethods.MyFunction(a,b,c). Då får man mer koll på vad som händer och man drabbas inte av de prestandaproblem som UpdatePanels kan orsaka. jQuery är också bra (det finns inget som hindrar att man använder sig av ovanstående i kombination med jQuery).ASP.NET ajax lösningar
Dessutom känner jag inte att de ger den kontroll jag vill ha över vad som händer.
Hur löser ni ajax med .net?Sv: ASP.NET ajax lösningar
Kör en "Generic handler" och hämta med jQuery AJAX, det innbär att du har full kontroll över koden rakt igenom.
Har man dragit in jQuery-ramverket så kan man skriva om alla sina JS-koder till jQuery JS och skapa nya möjligheter på sidan som gör att sidan kan strict valideras och HTML-koden blir renare.Sv:ASP.NET ajax lösningar
Jag har en del erfarenhet med jQuery men det har mest varit i en färdigt uppsatt miljö så vet inte riktigt vad som händer i bakgrunden.Sv: ASP.NET ajax lösningar
Sen så anropar du den sidan ifrån din jQuery AJAX funktion...
<sript>function loadControl(blobbID) {
$.ajax({
method: "get",
url: "/ajax/webhandler.ashx",
data: "blobbid=" + blobbID + "&rnd=" + Math.random(),
success: function(result) {
if (navigator.appName == "Microsoft Internet Explorer") {
result = escape(result);
result = result.replace(/%0A/g,"%0D");
result = result.replace(/%0D%0D/g,"%0D");
result = unescape(result);
}
$("#myDiv").val(result);
}
});
}</sript>
Du kan läsa lite här... http://dotnetperls.com/Content/ASHX-Handler.aspx
Sv:ASP.NET ajax lösningar
En fråga till dock, vilket format ska man skicka tillbaka datat i? Vet att vi tidigare kör med json på jobbet och det är väl det som föredras med jQuerys ajaxfunktion om jag förstått det rätt?
Så min fråga är vad det finns för metoder för att generera json-koden. Har försökt googla lite på det men inte hittat något riktigt bra exempel.Sv: ASP.NET ajax lösningar
Har inte haft behovet av att pilla med json tidigare, men denna skrevs för ca 1 måand sedan http://www.aspsidan.se/default.asp?page=forum&fp=showPost&pId=577645&cat=45
Kanske kan du få lite tips på andra sökord att hitta en bra artikel...Sv:ASP.NET ajax lösningar
http://lactose.blogspot.com/2008/06/json-by-jquery-c.html
<code>
First i tried consuming web services that serialized structs into XML but now I got it spewing JSON which
means no more escaping strings for javascript. When dumping large bits of content into a page XML
made sense to me since it was already HTML escaped, but if i wanted to send commands in the same
message i would have to make sure it was JS safe too, Having an un-escaped string will kill the JS but a
pooly formatted HTML will probably survive (nat that its then a an excuse for pooly format HTML), in fact
it may make sense to return an XML type in the struct, i'll have to look into that. So here is how to make
it workie:
in the .asmx
using System;
using System.Web.Script.Services;
using System.Web.Script.Serialization;
namespace mcpV2
{
///
/// Summary description for WebService2
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class WebService2 : System.Web.Services.WebService
{
public struct tests
{
public string thestr;
public int theint;
}
[WebMethod]
[ScriptMethod]
public tests HelloWorld()
{
tests ttt = new tests();
ttt.theint = 9;
ttt.thestr ="hello worls";
return ttt;
}
}
}
This will spit out:
{"d":{"__type":"mcpV2.WebService2+tests","thestr":"hello worls","theint":9}}
I called it with the JQUERY .ajax method :
$.ajax({
type: "POST",
url: "webservice2.asmx/HelloWorld",
beforeSend: function(xhr) {
xhr.setRequestHeader("Content-type",
"application/json; charset=utf-8");
},
dataType: "json",
success: function(msg) {
// Insert the returned HTML into the .
$('#Div1').text(msg.d.thestr);
}
});
I added some other stuff for error catching but you get the idea. I had some trouble with Web services
making huge memory leaks with the XMLserializer, hopefully the .NET AJAX serializer is not a memory
hog...
</code>
Det verkar vara ett väldigt smidigt tillvägagångssätt.Sv: ASP.NET ajax lösningar