Доступ из просмотра идентификатора из списка внутри массива

#asp.net-mvc #asp.net-mvc-3

#asp.net-mvc #asp.net-mvc-3

Вопрос:

У меня следующая структура:

 public class MyType 
    {
        public int id { get; set; }
        public string name { get; set; }
    }

public class MyViewData : ObjetoViewModel
{
    public List<MyType>[] listParams { get; set; }
}
  

При этом я загрузил 5 списков типа MyType внутри listParams массива.

Я пытаюсь получить доступ к первому id из первого списка в моем представлении, но у меня ничего не получается. Я пытаюсь сделать что-то вроде:

 <%: Html.Label(Model.listParams[0]. ???? )%></td>
  

Но я не могу достичь этого значения

Комментарии:

1. Что значит, вы не можете достичь значения? Что происходит? Зачем вы используете Html.Label , если вы просто пытаетесь получить доступ к значению свойства? Я не совсем понимаю, что здесь происходит.

2. @AntP Я не знаю, как получить значение идентификатора поля, поскольку это список внутри массива. Есть ли какой-либо другой способ показать пользователю значение, которое я хочу, если не из label ? Спасибо

Ответ №1:

Чтобы распечатать элемент y списка в элементе массива x , вам просто нужно следующее:

 <%: Model.lstParams[x][y].id %>
  

Html.LabelFor предназначен для создания текстовых меток, которые (по умолчанию) отображают имя свойства, представленного вводом, где вводом будет выражение, представляющее свойство, а не значение свойства, которое вы пытаетесь создать.

Ответ №2:

Итак, причина, по которой вы хотите использовать помощник Html.Label, заключается в том, что он генерирует метку, которая соответствует вашему имени свойства, например.

Если бы у вас был один MyType в качестве вашей модели, он бы сделал это:

<label for="id">id</label>

<input type="text" name="id" id="id" value="Some value"/>

Используя массив, вы как бы теряете это преимущество, но вы все равно можете заставить его работать, если вам нужно. Если вы пытаетесь отправить данные обратно, и именно поэтому вы хотите, чтобы это сработало, вы можете.

 <% for (int i = 0; i < Model.lstParams; i  ) { %>    
  <%: Html.LabelFor(m => m.lstParams[i].id) %>
  <%: Html.TextBoxFor(m => m.lstParams[i].name) %>    
<% } %>
  

Комментарии:

1. Я не думаю, что он вообще хочет создавать ярлык. Он хочет получить доступ к значению.