2017-04-02 76 views
1

我正在爲酒店進行一些編程。如果預訂已完成,他們需要電子郵件收據。比較foreach中的多個字符串

我與所謂的剃刀MERGEFIELD工作:@GuaranteePolicy

一位客人可以預訂1個或多個房間。如果預訂了多個房間,則必須在每個房間設置GuaranteePolicy。但是,如果每個房間的GuaranteePolicy都相同,則必須在頁腳中打印GuaranteePolicy。

因此,當我看到它時,我必須比較每個房間中的所有GuaranteePolicy合併字段,並查看它們是否包含相同的文本?我不知道該如何解決。

我在多個房間中循環,如果GuaranteePolicy不同,則打印。這是工作的罰款:

@if (!string.IsNullOrWhiteSpace(room.GuaranteePolicy)) 
{ 
    <tr> 
     <th> 
      <span><strong>GuaranteePolicy:</strong></span> 
     </th> 
    </tr> 
    <tr> 
     <th> 
      <span>@room.GuaranteePolicy</span> 
     </th> 
    </tr> 
} 

但我怎麼能比較文本在多個room.GuaranteePolicy,並檢查是否在每個房間的文字是一樣的嗎?

@if (room.GuaranteePolicy == ?) 
{ 
    <tr> 
     <th> 
      <span>@room.GuaranteePolicy</span> 
     </th> 
    </tr> 
    <tr> 
     <th> 
      <span>@room.GuaranteePolicy</span> 
     </th> 
    </tr> 
} 

回答

0

爲了找出是否所有的房間都有相同GuaranteePolicy屬性值,你應該準備視圖模型與該信息並將其發送到後查看

簡體室等級:

public class Room 
{ 
    public string GuaranteePolicy { get; set; } 
} 

Loginc內部控制器返回查看您在其中顯示的信息:

List<Room> rooms = GetSelectedRooms(); //example 

bool samePolicy = false; 
var firstRoom = rooms.FirstOrDefault(); 
if (firstRoom != null) 
{ 
    samePolicy = rooms.All(r => r.GuaranteePolicy == firstRoom.GuaranteePolicy); 
} 

//Attach samePolicy onto ViewModel or ViewBag so you can use it inside Razor view 
0

在控制器做出檢查所有的房間都有同樣的政策,並在模型中的屬性分配給真或假的函數:

public class RoomsModel{ 
public bool SamePolicy ... 
public ....... Rooms ... 
} 

然後檢查中,如果該物業的真實CSHTML

if(Model.SamePolicy){ 
<footer>.... 
} 
+0

非常感謝您的回答。那麼你是否會用'@ GuaranteePolicy'合併域來實現你的建議?我很困惑在哪裏設置。 – NekMak

0

我不是100%肯定,如果我理解正確你的問題,但簡而言之,您需要檢查以下內容:您的模型由多個預訂組成,每個預訂可能有或沒有GuaranteePolicy。你想檢查一下,如果它們被設置,那麼它們都是相同的,並且只有在這是真的時才渲染頁腳。你可以解決它類似如下:

@{ 
    string firstGuaranteePolicy = Model.Bookings.Select(b => b.GuaranteePolicy).FirstOrDefault(); 
    bool areAllTheSame = Model.Bookings.Select(b => b.GuaranteePolicy).All(val => val == firstGuaranteePolicy); 
} 

@if (areAllTheSame) 
{ 
    <tfoot> 
    ... 
    </tfoot> 
} 

所以只需您提取第一GuaranteePolicy值(我假定你可以通過屬性Bookings導航到這些,修改,根據你的模型結構),如果所有的人和第一個一樣,那麼他們都是一樣的。