Как назвать текстовые поля в MVC при прохождении XElement - PullRequest
0 голосов
/ 02 февраля 2010

Я передаю XElement в мой режим редактирования и хочу, чтобы обычные элементы управления HTML были созданы для меня и были названы правильно. Код у меня есть:

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

Но это приводит к следующему:

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

Почему это так и как получить представление для создания текстовых ящиков с разумным именем (например)?

Спасибо

Мт.

1 Ответ

0 голосов
/ 02 февраля 2010

Вы действительно должны создать ViewModel для хранения ваших данных представления, вместо того, чтобы передавать ему полный элемент xml.

Например:

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

А потом просто: Html.TextBoxFor (model => model.Name);

Редактировать: А также ... Не ваш <% = Html.LabelFor (model => Model .XPathSelectElement ( be% = Html.LabelFor (модель => модель .XPathSelectElement (

...