Ho riscontrato un problema molto strano che non riesco a trovare la causa di.Differenza di rendering degli attributi di dati MVC Html
Nella mia app Asp.Net MVC (.net4.0/MVC4) Sto rimuovendo gli attributi di dati html all'interno di qualche elemento html per poi essere utilizzati all'interno di JavaScript.
Quindi nell'app ho un modello, ad es.
public class MyModel{
public bool MyFlag { get; set; }
}
sto passando poi questo modello attraverso su una semplice pagina di visualizzazione MVC e rendendo il valore booleano nella attributo data html, ad esempio,
@model MyProject.MyModel
<a href="#" data-is-flagged="@Model.MyFlag">Click Me</a>
Ora, durante l'esecuzione del progetto a livello locale l'html è resa come:
<a href="#" data-is-flagged="True">Click Me</a>
Tuttavia quando in esecuzione sul server, il codice HTML viene reso come:
<a href="#" data-is-flagged="data-is-flagged">Click Me</a>
In un primo momento ho pensato che forse il booleano non è stato impostato in qualche modo, quindi l'ho aggiunto all'elemento Click Me @Model.MyFlag
che viene visualizzato come Click Me True
. Ora ho il sospetto che questo abbia forse qualcosa a che fare con la modalità Debug vs Release, tuttavia dopo aver giocato con questo non ha fatto differenza.
La mia correzione a questo era di cambiare il codice per emettere il valore booleano come un valore stringa, ad es. data-is-flagged="@Model.MyFlag.ToString()"
che quindi esegue lo stesso rendering localmente e sul server.
Qualche idea qual è la causa di questo?
Stavi usando lo stesso browser per testare localmente e testare la versione distribuita? – jadarnel27
@ jadarnel27 sì stesso browser. Ho provato anche browser alternativi. –
È possibile che tu abbia in qualche modo una versione diversa del motore di visualizzazione Razor in esecuzione localmente rispetto al server? Il comportamento che si vede sul server sembra un po 'come la caratteristica degli attributi HTML condizionali introdotta in Razor 2. – Peter