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.

È stato utile?

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