Stiamo cercando di essere sicuri per i caratteri nelle nostre visualizzazioni e utilizzare i nuovi HtmlHelpers di ExpressionInputExtenssion, ma stiamo riscontrando risultati incoerenti. Abbiamo una visione che assomiglia a questo:ASP.Net MVC 2.0 Html.HiddenFor L'estensione HtmlHelper non restituisce il valore
ViewData.Model.FooID = <%= ViewData.Model.FooID %><
Model.FooID = <%= Model.FooID %>
<%= Html.HiddenFor(x=>x.FooID) %>
Ma ciò che vediamo nella visualizzazione reso è questo:
ViewData.Model.FooID = 515b0403-e75b-4bd7-9b60-ef432f39d338
Model.FooID = 515b0403-e75b-4bd7-9b60-ef432f39d338
<input id="FooID" name="FooID" type="hidden" value="" />
posso aggiungere manualmente questo:
<input id="FooID" name="FooID" type="hidden" value="<%= Model.FooID %>" />
Ma ora noi non lo sono più, ma sorprendentemente quando lo faccio, Html.HiddenFor ha sempre il valore corretto.
In realtà è un Nullable? No, non ho ancora eseguito il debug dell'estensione HtmlHelper. Il legatore modello dovrebbe legare il modello prima che l'azione del controller sia corretta? Posso intervenire sull'azione del mio controller, vedermi modellare con il valore corretto e anche nella vista posso vedere il modello con il valore corretto. Posso persino vedere il valore del modello valutare nella vista se accedo direttamente alla proprietà. –
Mark
Ho appena provato questo e funziona bene: <% = Html.Hidden ("CustomerGuid", item.CustomerGuid)%> Almeno in questo modo si può ancora essere sicuro dal tipo ... –
Sì. Potrei farlo, ma stavo cercando di evitare il nome del controllo "CustomerGuid". Sarebbe bello se ti dessero solo un metodo di estensione come Html.IdFor (x => x.CustomerGuid) e poi potrei lanciarlo ovunque mi serva. Non mi interessa scrivere l'HTML, basta nominare il controllo. Grazie! – Mark