2011-12-06 14 views
7

Esiste un modo per utilizzare l'helper TextBoxFor con testo codificato?MVC3 TextBoxPer testo con codifica

ad esempio: Quando si utilizza la seguente helper di MVC3 Con Razor vista motore:

@Html.TextBoxFor(model => model.Description) 

e il valore di model.Description è codificato, ad esempio:

<script>alert();'</script> 

il risultato viene casella di testo con la stringa codificata, quando il risultato desiderato è una casella di testo con la stringa decodificata:

<script>alert();'</script> 

C'è un modo per utilizzare il MVC TextBoxFor con stringa codificata invece di usare

@Html.TextBox("Description", Server.HtmlDecode(Model.Description)) 

?

+1

Sembra a me come si potrebbe essere cose oltre-codifica da qualche parte. Perché il contenuto è codificato nel database? In generale, dovrebbe * non * essere: dovresti codificare durante la visualizzazione, nei casi in cui stai proteggendo dall'iniezione. La codifica durante il salvataggio e la decodifica durante la modifica è irta di errori e complicazioni. –

+0

Io ho ragione, ma è bene sapere se i dati vengono salvati nel database codificato. Suppongo che l'altro metodo con @ html.TextBox sia la soluzione migliore per ora. – Erann3

risposta

5

Devi decodificare la stringa da html.

Utilizzare lo System.Web.HttpUtility.HtmlDecode per quello.

System.Web.HttpUtility.HtmlDecode("&lt;script&gt;alert();&#39;&lt;/script&gt;") 

si tradurrà in

<script>alert();'</script> 

TextBoxFor non supporta che così, si hanno 2 opzioni

1. Decode prima visualizzazione

@{ 
     Model.Description = System.Web.HttpUtility.HtmlDecode(Model.Description); 
    } 
    @Html.TextBoxFor(model => model.Description) 

2. Usa @ Html.TextBox per questo

@Html.TextBox("Description", System.Web.HttpUtility.HtmlDecode(Model.Description)) 

speranza che questo aiuta

+0

Grazie per la risposta, ma le due opzioni non sono molto diverse da quello che ho suggerito, probabilmente la soluzione più vicina per ora. – Erann3