La nuova release di jquery, la 1.5, ha portato novità in particolare per quanto riguarda la gestione delle chiamate ajax tramite la funzione $.ajax.
Per queste rimando alla documentazione ufficiale.
Se pero’ utilizzate la 1.5 insieme al plugin di validazione jquery.validate (che per esempio è quella che viene aggiunta di default quando si crea un progetto MVC 3), si verificherà sempre un errore se nella chiamata ajax specificate il dataType = ‘json’.
In pratica tratta la chiamata per “json” come fosse un “jsonp”.
Qui la segnalazione http://bugs.jquery.com/ticket/8118#no1
La soluzione è scaricare l’aggiornamento della jquery.validate da qui:
https://github.com/jzaefferer/jquery-validation/issues/36
del.icio.us Tags:
Jquery,
Ajax
E’ possibile cambiare la posizione delle proprie view(parziali o no) all’interno di un progetto MVC 3.0 abbastanza semplicemente.
Questo esempio di codice mostra come aggiungere al view engine di Razor una cartella “widget” sotto “View\Shared” dove poter posizionare alcune partial view specifiche:
protected void Application_Start()
{ RazorViewEngine viewEngine =
ViewEngines.Engines.OfType<RazorViewEngine>().FirstOrDefault();
string[] partialViewLocationFormats = viewEngine.PartialViewLocationFormats;
List<string> newPartialViewLocationFormats = new List<string>(partialViewLocationFormats);
newPartialViewLocationFormats.Add("~/Views/Shared/Widgets/{0}.cshtml");
viewEngine.PartialViewLocationFormats = newPartialViewLocationFormats.ToArray();
...
}
del.icio.us Tags:
MVC,
Razor
Segnalo questo interessante e must-have post di Chris O’Brien riguardante la gestione degli upgrade delle features per Sharepoint 2010.
Oltre al post c’e’ anche un preziosissimo tool su codeplex, sviluppato da lui e descritto nel suo blog, che consente di gestire da interfaccia utente o powersheel l’aggiornamento di una feature.
Quello che mi un po mi ha “amareggiato” è vedere che ad oggi sono solo 59 i download.
Cosa significa questo ? IMHO che sono ancora pochi i dev sharepoint che sviluppano “by feature”, cosa che sempre IMHO dovrebbe essere la regola per qualsiasi tipo di progetto Sharepoint.
Utilizzando Sharepoint 2010(ma anche la versione precedente) per gestire documenti, ci può essere segnalato dai nostri clienti un problema di doppia autenticazione richiesta quando si accede, anche in sola lettura, ad un documento per esempio word conservato in una document library.
Questo tipo di comportamente, che è by design, si ha nel caso in cui il client(nel caso del doc sarà il Word) venga considerato “untrusted”.
Segnalo questi due post che spiegano bene il problema e gli eventuali workaround:
Multiple Logon while open office Document from SharePoint
Office: Authentication prompts when opening Microsoft Office documents
Per non avere il problema e fare in modo che l’autenticazione fatta sullo Sharepoint sia sufficiente anche per aprire i documenti è sufficiente autenticarsi sul computer in uso con l’utenza di dominio con la quale si dovrà accedere allo Sharepoint ed essere sicuri di avere la seguente impostazione nei criteri si sicurezza del browser:
Solo per comunicare che ho disabilitato la possibilità di lasciare commenti sul mio blog a causa della quantità di spam che continua ad arrivare.
Per qualsiasi cosa, mi trovate alla voce Contatti o tramite Linkedin.
Per chi sviluppa applicazioni con WPF è ormai consolidato e direi un “must” applicare il MVVM(model view view model) pattern, di cui esistono diversi articoli, post e framework che ne semplificano l’implementazione.
Attualmente sto utilizzando il MVVM Light Toolkit di Galasoft, e per il momento mi sembra un framework realmente leggero e che fornisce le componenti base che servono per poter cominciare seriamente un progetto WPF.
Questo toolkit utilizza una classe che si chiama ViewModelLocator la quale si occupa di creare una istanza statica del ViewModel attraverso il meccanismo di binding sul datacontext della window principale.Per la precisione, riprendo la definizione di questa classe direttamente dal sito:
“Create a new ViewModelLocator, a class that holds and manages references to ViewModels.”
Il locator viene inserito nell’ App.xaml come risorsa:
<Application.Resources>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
</Application.Resources>
Nella MainWindow.xaml, la window principale viene assegnato il DataContext attraverso il binding al locator e alla proprieta Main che altro non è che il ViewModel principale:
DataContext="{Binding Main, Source={StaticResource Locator}}"
Tutto questo va bene, ma cosa succede se nella nostra applicazione wpf abbiamo altre Windows, come per esempio potrebbero essere delle maschere di dettaglio per un classico data-entry ?
Volendo mantenere e riutilizzare il sistema impostato da GalaSoft, ogni Window dovrà avere una classe Locator che crea il binding tra la window ed il suo View Model.
La soluzione che ho adottato è stata quella di creare una classe ViewModelLocator generica e di creare per ogni locator una nuova classe derivante da questa, ma con il pregio di non dover scrivere nessuna riga di codice aggiuntiva.
ViewModelLocatorEx:
using System;
namespace ViewModel.Base
{
public class ViewModelLocatorEx<T> where T : ViewModelBase, new()
{
private static T _main;
public ViewModelLocatorEx()
{
CreateMain();
}
public static T MainStatic
{
get
{
if (_main == null)
{
CreateMain();
}
return _main;
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "This non-static member is needed for data binding purposes.")]
public T Main
{
get
{
return MainStatic;
}
}
public static void ClearMain()
{
_main.Cleanup();
_main = null;
}
public static void CreateMain()
{
if (_main == null)
{
_main = new T();
}
}
public static void Cleanup()
{
ClearMain();
}
}
}
Ogni window, compresa quella principale, avrà il suo locator cosi definito:
using System;
namespace ViewModel.Locatorsl
{
public class MainViewModelLocator : ViewModelLocatorEx<MainViewModel>
{
}
}
Per ultimo dovranno essere dichiarati tutti i locators nell’ app.xaml come visto sopra, quindi per esempio:
<Application.Resources>
<vm:MainViewModelLocator x:Key="Locator" d:IsDataSource="True" />
...
<vm:OtherViewModelLocator x:Key="Locator2" d:IsDataSource="True" />
...
</Application.Resources>
Hope this helps…
del.icio.us Tags:
WPF,
MVVM,
GalaSoft
Se dovete realizzare delle console application con Visual Studio per aprire e lavorare su siti Sharepoint 2010, potreste avere un errore a prima vista inspiegabile.
L’errore “the web application http:// could not be found…” è generato da questa semplice riga di codice:
SPSite site = new SPSite(“http://…”)
La soluzione è banale, ma diciamo che il problema è sufficiente a farci perdere tempo prezioso oltre che ad arricchire l’ufficio delle nostre imprecazioni :)
In questo post spiegato per bene il problema e la soluzione.
del.icio.us Tags:
Sharepoint 2010
Con Sharepoint 2010 è molto più semplice e completa la possibilità di backuppare un sito o parte di esso.
Se pero’ per il backup è facile fare tutto tramite la Central Administration, per il restore non è cosi immediato e bisogna usare i comandi di powershell.
In questo post c’e’ spiegato bene come effettuare backup e restore granulari con Sharepoint 2010.