In tutti i post e i tutorial che ho letto a proposito della creazione di pagine personalizzate per i Dynamic Data, viene semplicemente detto che basta creare in DynamicData\CustomPages una cartella con il nome della tabella interessata, quindi copiare al suo interno i file che si trovano nella directory DynamicData\PageTemplates. Questi passaggi sono corretti, ma incompleti: se, infatti, ci si limita ad essi, provando ad eseguire il sito si otterrà una lunga sfilza di errori, perché nell'applicazione sono presenti oggetti con lo stesso nome.
Il problema è dovuto al fatto che le pagine copiate hanno lo stesso nome di quelle esistenti, cosa ovviamente non consentita. Per risolvere l'inconveniente, basta modificare il namespace delle pagine personalizzate. Ad esempio, supponiamo di aver creato una cartella di nome DynamicData\CustomPages\Users e di aver inserito al suo interno il file PageTemplates\List.aspx. Nella prima riga del markup di questa pagina troveremo qualcosa del tipo:
CodeBehind="List.aspx.cs" Inherits="WebApplication1.List" %>
Il parametro deve essere modificato ad esempio in:
CodeBehind="List.aspx.cs" Inherits="WebApplication1.Users.List" %>
Analogamente, nel file List.aspx.cs, la riga
namespace WebApplication1
deve diventare
namespace WebApplication1.Users
Solo a questo punto è effettivamente possibile eseguire l'applicazione Web senza errori.