Come per citarne caselle di testo in MVC quando passa XElement
-
25-09-2019 - |
Domanda
Sto passando un XElement alla mia visualizzazione Modifica e vogliono avere i soliti controlli HTML costruite per me e il nome corretto. Il codice che ho è:
...
<div class="editor-label">
<%= Html.LabelFor(model => Model.XPathSelectElement("site[@id = 'customerName']").Value)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => Model.XPathSelectElement("site[@id = 'customerName']").Value)%>
<%= Html.ValidationMessageFor(model => Model.XPathSelectElement("site[@id = 'customerName']").Value)%>
</div>
...
Ma questo produce il seguente:
<div class="editor-label">
<label for="Value">Value</label>
</div>
<div class="editor-field">
<input id="Value" name="Value" type="text" value="" />
</div>
Perché è questo e come posso ottenere la vista di generare sensibilmente-nome (ad esempio) TextBoxes?
Grazie,
Matt.
Soluzione
Si dovrebbe davvero creare un ViewModel per tenere i vostri dati di vista, invece di passarlo dell'elemento pieno xml.
Ad esempio:
public class CustomerModel
{
public CustomerModel(XElement xml)
{
this.Name = xml.XPathSelectElement("site[@id = 'customerName']").Value;
}
public string Name { get; set; }
}
E poi semplicemente: Html.TextBoxFor (modello => model.Name);
Edit: E anche ... non dovrebbe tuo <% = Html.LabelFor (modello => Modello .XPathSelectElement ( essere% = Html.LabelFor (modello => modello .XPathSelectElement (
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow