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.

¿Fue útil?

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
scroll top