Как получить доступ к свойству модели в представлении Razor IEnumerable Type? - PullRequest
2 голосов
/ 28 декабря 2011

Как получить доступ к свойству модели (например, @Html.EditorFor(x=>Model.Name)) в представлении Razor IEnumerable Type без использования циклов ?? I.e Если представление строго типизировано для некоторой модели, содержащей модель в виде списка.
Например.

@model IEnumerable<EFTest2.DAL.package_master>


Тогда можно отобразить TestBoxFor или EditorFor (для создания новой модели) Html-помощник без использования foreach Loop .???

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Если какое-либо свойство модели имеет тип IEnumerable<SomeType>, вы обычно определяете шаблон редактирования / отображения (~/Views/Shared/EditorTemplates/SomeType.cshtml или ~/Views/Shared/DisplayTemplates/SomeType.cshtml).Этот шаблон будет автоматически отображаться для каждого элемента коллекции, поэтому вам не нужно писать циклы:

@Html.EditorFor(x => x.SomeCollection)

, а внутри шаблона вы сможете получить доступ к отдельным свойствам:

@model SomeType
@Html.EditorFor(x => x.Name)
...

Теперь, если вам абсолютно необходим прямой доступ к какому-либо элементу внутри представления, который строго типизирован как IEnumerable<SomeType>, вам лучше использовать другой тип коллекции, например IList<SomeType> или SomeType[], в качестве модели представления, которая даст вампрямой доступ к элементам по индексу, и вы сможете сделать это, например, для доступа к 6-му элементу коллекции:

@model IList<SomeType>
@Html.EditorFor(x => x[5].Name)
0 голосов
/ 29 декабря 2011

Таким образом, в основном вы упоминаете тип List и т. Д.

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

. Предположим, у вас есть класс "Person", а затем List в вашей модели.сначала создайте экземпляр лица, у которого будет пустой экземпляр лица, добавьте его в список, а затем привяжите этот последний элемент списка к своему редактированию для.

@{
    Person contact = new Person(); //Empty person instance
    PersonList.Add(contact);
     } 

, позже привяжите его к вашим индивидуальным полям

 @Html.TextBoxFor(m => m.PersonList[PersonList.Count - 1].PrimaryContacts.FirstName)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...