2015-08-13 13 views
5

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?

+0

Stavi usando lo stesso browser per testare localmente e testare la versione distribuita? – jadarnel27

+0

@ jadarnel27 sì stesso browser. Ho provato anche browser alternativi. –

+3

È 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

risposta

3

cito la risposta da another website:

Questo è il risultato di attributi condizionali che è stata introdotta in pagine Web 2 (MVC 4): http://www.mikesdotnetting.com/Article/201/Cleaner-Conditional-HTML-Attributes-In-Razor-Web-Pages
due opzioni: tornare alle pagine Web 1 (MVC 3) o modificare tutti i file interessati da .

Se il valore per un attributo è true, il risultato è che l'attributo si ripete (questo è utile per le variabili all'interno di un optionselect per esempio). Se il valore impostato è false, non viene eseguito il rendering (non il nome dell'attributo dell'evento).

Quindi, come i commenti di @Jamie e @Peter, potresti avere una versione diversa del motore Razor nel tuo ambiente di sviluppo.

+1

Questo sembra essere il problema. Grazie per questo. –

Problemi correlati