Pergunta

Estou passando um Xelement para minha visão de edição e quero ter os controles HTML usuais construídos para mim e nomeados corretamente. O código que tenho é:

...
            <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>
...

Mas isso produz o seguinte:

        <div class="editor-label"> 
            <label for="Value">Value</label> 
        </div> 
        <div class="editor-field"> 
            <input id="Value" name="Value" type="text" value="" />
        </div>

Por que isso e como faço para obter a vista para gerar caixas de texto com nome sensivelmente nomeado (por exemplo)?

Obrigado,

Matt.

Foi útil?

Solução

Você realmente deve criar um ViewModel para manter seus dados de visualização em vez de transmiti -lo o elemento XML completo.

Por exemplo:

public class CustomerModel
{
  public CustomerModel(XElement xml)
  {
    this.Name = xml.XPathSelectElement("site[@id = 'customerName']").Value;
  }
  public string Name { get; set; }
}

E então simplesmente: html.textboxfor (modelo => model.name);

EDIT: E também ... não deve seu <%= html.labelfor (modelo => Modelo.XpathSelectElement (be %= html.labelfor (Model => modelo.XPathSelectElement (

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top