Cómo nombrar cuadros de texto en MVC al pasar XElement
-
25-09-2019 - |
Pregunta
Estoy pasando un XElement a mi vista de edición y quiere tener los controles HTML habituales construidas para mí y el nombre correcto. El código que tengo es:
...
<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>
...
Pero esto produce lo siguiente:
<div class="editor-label">
<label for="Value">Value</label>
</div>
<div class="editor-field">
<input id="Value" name="Value" type="text" value="" />
</div>
¿Por qué es esto y cómo consigo el fin de generar cuadros de texto (por ejemplo) con sensatez con nombres?
Gracias,
Mat.
Solución
Usted realmente debe crear un modelo de vista para mantener sus datos de vista en lugar de pasarlo elemento XML completo.
Por ejemplo:
public class CustomerModel
{
public CustomerModel(XElement xml)
{
this.Name = xml.XPathSelectElement("site[@id = 'customerName']").Value;
}
public string Name { get; set; }
}
y luego simplemente: Html.TextBoxFor (modelo => model.Name);
Edit: Y también ... no debe su <% = Html.LabelFor (modelo => Modelo .XPathSelectElement ( ser% = Html.LabelFor (modelo => modelo .XPathSelectElement (
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow