Al giorno d’oggi un’applicazione web che si rispetti non può più fare a meno di Ajax. Anche su SharePoint vale la stessa cosa e andando a sviluppare web part è quasi “d'obbligo” utilizzare un qualche framework Ajax. Volendo utilizzare le Ajax Extension di Microsoft e volendo anche utilizzare il nuovo Framework 3.5 è necessario compiere alcuni piccoli passi.
La prima cosa da fare è modificare il web.config di SharePoint affinchè includa tutte le entry necessarie a supportare il Framework .NET 3.5. E’ possibile editare a mano il web.config di SharePoint e riportare tutte le modifiche, ma esiste anche un metodo più rapido descritto in questo post. Qui i punti salienti:
- Da Visual Studio 2008 creare un progetto web temporaneo;
- Selezionare come target il Framework 2.0;
- Copiare il web.config di SharePoint nel nuovo progetto;
- Cambiare il target del progetto selezionado il Framework 3.5;
- Copiare il web.config modificato nella virtual directory di SharePoint.
Fatto questo il nostro web.config avrà tutto il necessario per supportare LINQ, le Ajax Extensions, e compagnia varia.
A questo punto potremo creare le nostre web part Ajax-Enabled. L’unica accortezza è quella di verificare che nella pagina ci sia sempre uno ScriptManager. Volendo è possibile modificare direttamente la master page, ma in caso di redistribuzione della nostra web part potrebbe essere scomodo.
Possiamo però verificare da codice la presenza dello script manager e nel caso non fosse presente possiamo andare ad aggiungerlo in automatico:
1: protected override void OnInit(EventArgs e)
2: {
3: base.OnInit(e);
4: try
5: {
6: // Verifico se lo script manager è già presente
7: ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
8: if (scriptManager == null)
9: {
10: scriptManager = new ScriptManager();
11: scriptManager.ID = "ScriptManager1";
12: scriptManager.EnablePartialRendering = true;
13: // Aggiungo lo script manager alla pagina
14: this.Page.Form.Controls.AddAt(0, scriptManager);
15: }
16: }
17: catch (Exception ex)
18: {
19: error = ex.ToString();
20: }
21: }
Per finire nel caso ci fossero problemi di postback con gli update panel, questo KB della Microsoft mostra il work-around da utilizzare.
Alla prossima!