2015-03-16 4 views
0

В моем представлении я хочу отображать идентификатор гостя, разделенный запятой, но я не знаю, как это сделать. Сейчас это выглядит как изображение ниже. 16 и 17 являются идентификаторами от отдельных гостей. Это смущает.Как получить запятую между элементами в представлении?

enter image description here

Моя модель выглядит следующим образом:

public class Guest 
{ 
    [Key] 
    public int GuestId { get; set; } 
    //Vreemde sleutel van Reservation 
    public Int32? ReservationId { get; set; } 
} 

Контроллер генерации View выглядит следующим образом:

public ActionResult Index() 
    { 
     return View(_reservationrepository.GetAllReservations()); 
    } 

public IQueryable GetAllReservations() 
    { 
     return db.Reservations.Include(r => r.spot).Include(r => r.User).Include(r => r.Guests); 

    } 

Мой Посмотреть отображая внешность идентификаторам так:

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.Guests) 
    </td> 
</tr> 
} 

Как я могу сделать гостевой идентификатор разделенным запятой?

+4

Что делает ваш вид кода выглядит? Я склонен думать, что код представления будет единственным подходящим фрагментом кода для этой проблемы :-) – chiccodoro

+0

Возможно, вам захочется взглянуть на String.Join, как в [этом вопросе] (http://stackoverflow.com/questions/3610431/string-join-on-a-listint-or-other-type) –

+0

@chiccodoro yes Я добавил код представления в OP :) – Forza

ответ

2

Если вид имеет коллекцию Guest объектов (назовем его Model.Guests на данный момент), то вы можете присоединиться идентификаторы в строку с разделителями:

@string.Join(",", Model.Guests.Select(g => g.GuestId)) 

Или, в зависимости от смыслового контекста модели вида (если это только для вида, а не на самом деле бизнес-модель), то вы можете даже положить, что на самой модели:

public string GuestIDs 
{ 
    get 
    { 
     return string.Join(",", Guests.Select(g => g.GuestId)); 
    } 
} 

и просто связываются вид на это имущество:

@Model.GuestIDs 
+0

Спасибо! Теперь у меня это так, и это работает: '@ string.Join (", ", item.Guests.Select (g => g.GuestId))' – Forza

0

Вы можете отделить список <int> запятой, как это.

// old way 
List<int> list = ...; 
string.Join(",", list.Select(n => n.ToString()).ToArray()); 

// new way - just pass in list, no need to call .ToArray() 
var list = new List<int> { 1, 2, 3 }; 
string.Join(",", list); 
+0

Обратите внимание, что вызов метода ToArray() не нужен. –

+0

При использовании String.Join() вам не нужен .ToArray(). Одна перегрузка (https://msdn.microsoft.com/en-us/library/dd783876(v=vs.110).aspx) принимает IEnumerable . – BlackjacketMack

2

Вы можете включить запятую, присоединиться к нему в результате, как

@string.Join(",", Model.Guests.Select(g => g.GuestId)) 
Смежные вопросы