.NET

There are 43 entries for the tag .NET

Validator e (Auto)Postback

Non si finisce mai di imparare... Lo scenario è una pagina web con un textbox e relativo required validator + un pulsante per effettuare il postback, tutti con lo stesso ValidationGroup. Fino a qui nessun problema, tutto funziona correttamente. Se alla pagina aggiungo una DropDownList con AutoPostBack="true" succede questo: 1. Clicco il pulsante per attivare il validator. 2. Cambio elemento selezionato nella dropdownlist 3. Il postback non avviene a causa dei validatori!!! 4. Cambio di nuovo elemento selezionato nella dropdownlist 5. Il postback avviene correttamente. Pare che la stessa cosa avvenga anche se clicco su un LinkButton presente nella pagina e su qualsiasi elemento che provoca un postback:...

Aspx commentato

Non ho provato in c# ma in vb.net ho commentato del codice html nell'aspx eppure il riferimento ai componenti nel code behind continuava a essere valido. Dato che questa soluzione non mi piaceva (non so se è un malfunzionamento o la normalità), e volendo ripulire anche il code behind, ho dovuto togliere dalla pagina aspx l'intero pezzo che non mi interessava più. La cosa bella è che se commento l'aspx e commento anche il code behind si verifica un errore a runtime sugli eventi usati nell'aspx (es. onClick) dato che risultano non essere più presenti nel code behind... mah! Technorati tags: .NET

Deployment project

Ci sono diversi modi di pubblicare un'applicazione appena finita, ma quello che odio di più è il web deployment project. Data la dimensione delle mie applicazioni mi soddisfa il semplice "Publish". Qualcuno sapeva che il Web Deployment Project considera i file presenti nella cartella del progetto e non solo quelli inclusi? Pare di si dato che ho escluso un po' di file ma ho avuto errori di compilazione di tipo non riconosciuto! Continuerò a usarlo solo in progetti ereditati da altri per evitare eventuali casini di file presenti solo sul server... Technorati tags: .NET

Un sito come una casa

Mi vorrei soffermare su questa splendida similitudine fatta da miei colleghi per fare un paio di riflessioni. Un cliente ha un sito in cui vende il suo prodotto suddiviso in tre macrocategorie (ora non immaginate come categorie l'"acqua" e come prodotto "Acqua Frizzante 6 bottiglie da 1 litro Marca x" - pensate piuttosto "generi alimentari"). Il sito è ovviamente dinamico però la chiave delle categorie è cablata - a modo - nel codice a causa di alcune specifiche imposte dal cliente stesso. Un giorno il cliente chiede di togliere una di queste categorie. Si fa, il sito è stato fatto da poco, non vogliamo...

Value di una dropdownlist

In una dropdownlist, spesso il primo elemento è vuoto e capita di scrivere new ListItem(); A volte però, in caso di value interi si trova anche new ListItem("", "0"); Attenzione che in questo caso il validatore per campi obbligatori non funziona in quanto il value è popolato.   Technorati tags: .NET

W le query

In questi anni le tecnologie Microsoft si sono evolute (anche fin troppo velocemente, tanto che non è possibile assimilare tutto). Servono anni per appropriarsi di una tecnologia eppure tutto adesso si sviluppa nel giro di poco. Oltre alle tecnologie abbiamo visto nascere nuovi pattern. Devo ancora approfondire ASP.NET MVC (ma gli strumenti non me lo consentono) però tutti questi linq, entity, etc non mi hanno entusiasmato. Per non parlare poi delle soluzioni delle aziende: interi DAL sviluppati e poi accantonati. E' interessante conoscere i pattern e giusto svilupparli ma (la seguente affermazione dipende dal contesto): "Io preferisco le query sql"  Eh si, di...

Focus in UpdatePanel

<asp:TextBox ID="txtValore" runat="server" onfocus='setTextBoxFocused(this.id);SetEndCursor(this)'   AutoPostBack="true" OnTextChanged="txtValore_TextChanged"></asp:TextBox>   function setTextBoxFocused(clientId) { $.get("SetFocused.aspx?clientId=" + clientId + "&ts=" + new Date().getTime()); }     function SetEndCursor(textBox) { if (textBox.createTextRange) { var fieldRange = textBox.createTextRange(); fieldRange.moveStart('character', textBox.value.length); fieldRange.select(); } }   CodeBehind nel controllo con UpdatePanel: if (Session["TextBoxFocused"] != null) { ScriptManager.GetCurrent(this.Page).SetFocus(Convert.ToString(Session["TextBoxFocused"])); } La pagina richiamata da JSON: SetFocused.aspx protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (Page.IsPostBack) return; Session["TextBoxFocused"] = Request.QueryString["clientId"]; } Grazie a Gae. Technorati tags: .NET,  Csharp

Gridview e RowSpan

Attenzione a usare il RowSpan e il Cells[i].RemoveAt(0) sulle righe di una Gridview  per effettuare il merging di celle. Il CommandArgument di qualche ImageButton presente potrebbe risultare vuoto. La soluzione? Non rimuovere mai le celle! Al massimo operare sul Visible=false. Technorati tags: .NET

Microsoft Day 2008 - Firenze

Molto interessante il Microsoft Day 2008 a Firenze. WPF e Entity Framework per me rimangono in secondo piano. Eccezionale la creazione di date e time in Sql Server 2008 così come l'utilizzo di dati geografici (nel piano e nello spazio, con un primo supporto grafico). Ottima sessione su Sql Server 2008, anzi direi molto pratica. Per me al primo posto rimangono le sessioni di Brambati, ottimo insegnante al contrario di altri. Dynamic Data è fantastico (diciamo che lo avevamo realizzato tutti, ma questo è il massimo della flessibilità). Internet Explorer 8 ha delle novità importanti (secondo me tutte le applicazioni avranno web slice e link dinamici,...

appdomain recycling

In un codice funzionante nel Framework 1.1 e importato nel 2.0 ho notato la perdita della sessione inproc. La causa è la cancellazione di una sottocartella posta in /docs/myfolder La perdita della sessione avviene solo dopo una Response.Redirect a un'altra pagina. Non mi va bene: 1. cambiare la Response.Redirect con una Server.Transfer 2. mettere mano al registro di windows 3. cambiare la sessione a stateserver Sembra che la creazione della cartella non dia problemi. Ho letto in giro che potrebbe essere causato da eventi scatenati dal nuovo FileSystemWatcher. (http://weblogs.asp.net/owscott/archive/2006/02/21/ASP.NET-v2.0-_2D00_-AppDomain-recycles_2C00_-more-common-than-before.aspx) Origine: http://blogs.msdn.com/toddca/archive/2005/12/01/499144.aspx Pare ci sia una patch ad hoc che non ho...

Un'idea nuova (?)

Pensavo di avere avuto un'idea originale ma mi hanno anticipato: http://www.simonecarletti.com/blog/2007/01/captcha_advertising.php   Technorati tags: .NET

Data con calendario

Promemoria:   <asp:TextBox ID="txtDataConsegna" runat="server" Columns="10"></asp:TextBox> <asp:Image ID="imgCalendarDataConsegna" runat="server" ImageUrl="~/img/calendario.gif" ImageAlign="AbsMiddle" /> <cc1:MaskedEditExtender runat="server" CultureName="it-IT" MaskType="Date" Mask="99/99/9999" TargetControlID="txtDataConsegna" ID="mskDataConsegna" AcceptNegative="None" ErrorTooltipEnabled="true" InputDirection="RightToLeft"> </cc1:MaskedEditExtender> <cc1:CalendarExtender runat="server" ID="calextDataConsegna" TargetControlID="txtDataConsegna" Format="dd/MM/yyyy" PopupPosition="TopLeft" PopupButtonID="imgCalendarDataConsegna"> </cc1:CalendarExtender>Technorati tags: .NET

Link di effetti per immagini

http://eyecon.ro http://blog.joshuaeichorn.com/archives/2007/01/11/jquery-image-strip/ http://www.methvin.com/jquery/jq-corner-demo.html Technorati tags: .NET,  Javascript

Un Visualizer per Regular Expression

Grazie Scott: http://tools.osherove.com/Default.aspx?tabid=187 PS -scusate ma l'inserimento di post e commenti sta diventando impossibile! Technorati tags: .NET

IPhone

Ormai è ovunque. Il vostro applicativo web gira sull'iphone? Provatelo qui: http://www.testiphone.com/ Technorati tags: .NET,  Iphone

Un errorino subdolo

Occhio alla differenza tra: for (int i = 0; i < 2; i++) { string s = "errore: " + i + 1 + " mancante!"; } e questo: for (int i = 0; i < 2; i++) { string s = "errore: " + (i + 1) + " mancante!"; }Technorati tags: .NET, Csharp

Test dell'invio mail

Per testare l'invio delle mail anche quando non si ha un servizio disponibile (arriveranno sotto forma di file .eml nella cartella indicata), è sufficiente inserire nel web.config: <system.net> <mailSettings> <smtp deliveryMethod="SpecifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="C:\Prova"/> </smtp> </mailSettings> </system.net>Technorati tags: .NET

Skip menu

Visto che non ci costa niente... <a href="#skiplinkmenuorizzontale" title="salta il menu orizzontale"> <asp:Image runat="server" ID="imgSkipLink" AlternateText="" Width="0" Height="0" BorderWidth="0" ImageUrl="~/img/blank.gif" /></a>  MENU <a id="skiplinkmenuorizzontale"></a>   Aiutiamo chi è più sfortunato di noi permettendogli il "salto" del menu. TreeView e Menu già lo fanno... Technorati tags: .NET,  Accessibilità,  Web

Effetti javascript sulle immagini

Un link molto utile per una photogallery... http://www.huddletogether.com/projects/lightbox/ Technorati tags: .NET,  Javascript

Repeater innestati

Per gestire due repeater innestati: <asp:Repeater runat="server" ID="groupItemRepeater" OnItemDataBound="groupItemRepeater_ItemDataBound"> <ItemTemplate> <!-- bla bla --> <asp:Repeater runat="server" ID="singleItemRepeater"> <ItemTemplate> <!-- bla bla --> </ItemTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater> E nel code behind: protected void Page_Load(object sender, EventArgs e) { groupItemRepeater.DataSource = //loading; groupItemRepeater.DataBind(); } protected void groupItemRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) { RepeaterItem item = e.Item; if ((item.ItemType == ListItemType.Item) || (item.ItemType == ListItemType.AlternatingItem)) { ...

Lavori in corso...

In questo periodo sto rilasciando parecchi siti e un forum molto bello... Datemi tempo, poi tornerò anche con la mia prima certificazione. Intanto è arrivato il libro e vi segnalo un link: http://www.knowdotnet.com/   Technorati tags: .NET

Using per i Generics

Per rendere il codice più leggibile è possibile usare using per creare degli alias: using InsiemeInteri = Namespace1.Classe<int>; using InsiemeClasseItem = Namespace1.Classe<Namespace2.ClasseItem>; dove Classe è la Classe contenitore e ClasseItem la classe usata all'interno del contenitore, il tipo di Generic per intenderci. Namespace1 e Namespace2 sono i namespace a cui appartengono le due classi di cui ho parlato in precedenza. Technorati tags: .NET,  Csharp

Reflection

La Reflection permette di analizzare un assembly. Bisogna aggiungere: using System.Reflection; poi caricare l'assembly mediante Assembly.Load("System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"); e ottenere, per esempio i tipi mediante GetTypes(). Ma ci sono tanti altri metodi da scoprire, anche sulla classe Type. Technorati tags: .NET, Reflection

Un suggerimento

Un suggerimento per i creatori di Visual Studio per la funzione Cerca/Modifica in files: Aggiungere un check per indicare se evitare di cercare/modificare anche nelle righe di commenti! Non dovrebbe essere difficile da realizzare! Ovviamente segnalato a Microsoft: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=317263 Technorati tags: .NET

Carriage return e Line feed

A proposito di __BuildControlTree per popolare la collection Controls della pagina autogenerato di Asp.Net richiamato in FrameworkInitialize (insieme a ValidateInput dell'oggetto Request). Vi ricordo di evitare l'utilizzo delle coppie carriage return/line feed tra i controlli server. La sequenza \r\n viene aggiunta all'albero generato come controllo literal quindi un leggero overhead nelle prestazioni in fase di esecuzione. Technorati tags: .NET

Sito offline

Un trucchetto vecchio e inutile. Aggiungete una pagina App_Offline.htm nella root dell'applicazione e...: - shutdown dell'Appdomain; - unica pagina vista da chiunque tenta di connettersi. Technorati tags: .NET

I commenti

// commento PROGRAMMO ergo COMMENTO A quante persone dovremmo insegnare il primo comandamento?   Mi permetto un EDIT: io sono favorevole a commentare anche i metodi privati (molti dicono sia inutile). La motivazione? Chi vi ha detto che un domani il vostro codice non finisca nella mani di qualcun altro? Technorati tags: .NET,  Csharp

HttpHandler

Felice di aver risolto il problema di un utente di un forum e di aver imparato qualcosa di più vi posto il problema dell'uso di un httphandler: L'obiettivo era rimappare le immagini gif in un percorso esterno alla root del sito. La soluzione: in IIS ho mappato le gif per essere servite da isapi (come un file aspx): è importante non checkare "Verify if file exists"!!!! Infatti i file delle immagini non esistono nel sito. In web.config ho registrato l'handler: <add verb="*" path="copy.gif" type="Pippo.ImageHandler" /> Nell'handler: public void ProcessRequest(HttpContext context) { context.Response.ContentType = "image/gif"; context.Response.WriteFile(@"C:\Prova\copy.gif"); } dove C:\prova può essere sostituita con la stringa ricavata...

Summary

Per favore aggiungere il tag summary alle table dei vostri siti (dove occorre). Cosa vi costa? Chiedo anche di aggiungere sempre l'attributo alt su img e un link per saltare il menu. Alto contrasto tra sfondo e scritte! Ogni link, ogni oggetto cliccabile deve essere raggiungibile da tastiera! Mi riferisco soprattutto alle tabstrip... se proprio non ce la fate basta un pulsante per effettuare lo switch tra tab. Infine tutti gli stili vanno definiti nei css e non nelle pagine e NIENTE FRAMES e NIENTE SCRITTE LAMPEGGIANTI!!! Per 5 minuti di lavoro in più... il guaio è che la maggior parte ignorano questi accorgimenti Technorati tags:...

DTD

Di seguito si riportano alcune delle grammatiche formali create dal W3C:   HTML 4.01 Transitional <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> HTML 4.01 Frameset <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> HTML 4.01 Strict <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> XHTML 1.0 Transitional <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> XHTML 1.0 Frameset <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> XHTML 1.0 Strict <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> XHTML 1.1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">Technorati tags: .NET

Tool molto interessante

Grazie a Scott...ora leggerò un po': http://weblogs.asp.net/scottgu/archive/2006/09/27/Tip_2F00_Trick_3A00_-Patterns-and-Practices-Guidance-Explorer-for-.NET-and-ASP.NET.aspx Technorati tags: .NET

Il problema dell'upload di files

Leggo spesso di gente che ha problemi con l'upload di file molto grandi. L'errore che si riscontra non è gestibile dall'applicativo. Molti sanno che è possibile aumentare la dimensione dei file in upload (che poi si tratta effettivamente della dimensione della richiesta http) ed eventuali timeout di sessione direttamente nel web.config. Ma questo spesso non basta... Tempo fa avevo trovato il modo di gestire il tutto da un articolo. Purtroppo non posso fornire riferimenti (l'autore è libero di chiedermi di togliere questo codice da questa pagina o darmi il link) ma proverò a ricostruire il contenuto. Si trattava di un HttpModule, ovvero...

GridView - Sorting

Il potentissimo controllo di Microsoft ha qualche difettuccio sul sorting. Io in genere, utilizzo un DataTable come DataSource. Nella griglia è integrato un meccanismo di sorting interno che, a quanto pare, funziona solo quando è specificato il DataSourceID, cioè l'ID del controllo che fa da DataSource. Che peccato! Ho visto con il Reflector che probabilmente si potrebbero sfruttare le proprietà SortExpression e SortDirection anche con un source di tipo datatable o dataset... Ho contattato Microsoft anche perchè dalla documentazione si capisce diversamente. Technorati tags: .NET

Intellisense non per tutti

Mio malgrado ho notato oggi che l'Intellisense del Visual Studio non è abilitato per i file skin! La soluzione? Tools>Options>Text Editor>File Extension e fate un add di un estensione skin associata a User Control Editor. Problema risolto! PS - se il file skin è aperto occorrerà chiuderlo e riaprirlo (da bravi informatici). Technorati tags: .NET

Quando si intromette la MasterPage...

Oggi una bella novità: Create due MasterPage A e B. Nella A create una bella MultiView con due view (in aspx). Nel codice, invece: protected override void OnPreInit(EventArgs e) { base.OnPreInit(e); if (this.Master != null && this.MasterPageFile.IndexOf("a.Master") > -1) this.MasterPageFile = "~/b.Master"; Create(); } private void Create() { View view = new View(); TextBox txt = new TextBox(); txt.ID = "txt1"; view.Controls.Add(txt); multiView.Views.Add(view); } Mi aspetterei 3 View, ma ce ne sono solo 2: MAGIA!!! La view aggiunta a runtime si è persa nel nulla. Segnalato a Microsoft: Microsoft Feedback Technorati tags: .NET

DropDownList

Una novità sulla dropdownlist: l'assegnamento di un valore non esistente al selectedvalue genera un'eccezione (ArgumentOutOfRangeException) ma solo se la pagina viene caricata a seguito di PostBack! Technorati tags: .NET

Proprietà private mostrata nel designer

Ho un controllo che eredita da textbox e ho bisogno di nascondere la proprietà textmode in quanto non più utilizzata. Ho trovato due soluzioni: la prima, abbastanza semplice, fare un override della proprietà pubblica andando a settare l'attributo Browsable a false. Funziona perfettamente. Ma se invece dell'override effettuo un private new (shadowing), la proprietà continua a essere mostrata nel designer, nonostante sia private! Segnalato a Microsoft: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=299845 Technorati tags: .NET

CompositeControl

Innovazione del Framework 2.0, questo tipo di controlli permette di creare controlli complessi costituiti da più controlli semplici. Il paradigma su cui si fondano è la composizione rispetto alla tradizionale renderizzazione. E' per questo che sarebbe meglio non sovrascrivere il Render() se non per particolari necessità. Oltre che ereditare da CompositeControl e creare il designer opportuno (che eredita da CompositeControlDesigner), sarà necessario sovrascrivere la collection dei Controls e ogni proprietà che opera sui controlli sottostanti richiamando EnsureChildControls() che forza la creazione dei controlli se non già presente. Nella CreateChildControls() occorre chiamare una Clear() sui controlli presenti, creare i nuovi controlli e impostare a true...

base.CssClass

Oggi mi è capitata una cosa singolare. Create una classe che eredita da TextBox (diciamo la classe A) e nel costruttore (che ha : base() ) assegnate a una stringa base.CssClass (es.: string a = base.CssClass;). Poi create una classe B che eredita da A e nel costruttore (che ha : base() ) assegnate un'altra stringa a CssClass (es. base.CssClass = "xxx"; ). Lanciate l'applicazione e in debug analizziamo cosa succede. I due costruttori vengono richiamati nell'ordine corretto (prima A poi B) ma analizzando il contenuto di base.CssClass nel costruttore di A figura già l'assegnamento della stringa che avverrà solo in B. In effetti poi l'assegnamento non...

Fileupload e postback in IE

Parliamo di Internet explorer. Provate a inserire un fileupload in una pagina e un bottone che provoca postback. Ora nel fileupload scrivete asdf e cliccate il bottone. Magia: il postback non avviene! E' un bel problema perchè sembra si tratti di validazione lato client. E l'unica soluzione per ora, per fornire un output all'utente è proprio validare il contenuto del file upload tramite regular expression lato client. Se fate una ricerca in internet scoprirete che non sono l'unico ad avere individuato il problema. Segnalato a Microsoft che conferma. Technorati tags: .NET,  IE

OnBlur e OnChange in Firefox

Pare che sia un bug conosciuto. Comunque non ho ancora trovato niente per risolverlo se non la soluzione offerta da Soheil Rashidi's Blog che potete trovare qui. E' un bel problema questo, soprattutto per chi fa uso di Anthem che lavora proprio sull'onChange. Technorati tags: .NET,  Javascript,  Firefox

Analizzare un assembly

Segnalo questi due tool per analizzare le dll: Reflector Anakrino Technorati tags: .NET

Colonna seleziona tutti su GridView

In molti mi hanno chiesto come aggiungere una colonna di check che in cima presentasse la dicitura SelezionaTutti. E' presto fatto: Nell'aspx della gridview basta aggiungere una colonna: < asp:TemplateField SortExpression="SelezionaTutti" HeaderText="&lt;font face='wingdings 2'&gt;P&lt;/font&gt;">   <headerstyle horizontalalign="Center"></headerstyle>   <itemtemplate>   <asp:CheckBox id="chk" runat="server">   </asp:CheckBox>   </ itemtemplate>   </asp:TemplateField> E nel codice la gestione del rowCommand opportunamente associato: protected {   {     {     chk.Checked = !chk.Checked; } } } Technorati tags: .NET void grd_RowCommand(object sender, GridViewCommandEventArgs e)if (e.CommandName.Trim().ToLower() == "selezionatutti")GridView griglia = (GridView)(sender);foreach (GridViewRow itm in griglia.Rows)CheckBox chk = (CheckBox)itm.FindControl("chk");if (chk != null)