2011-12-07 60 views
18

Tôi có thể rút ngắn dòng này thành một dòng không? Tôi đã thử nhiều cách khác nhau nhưng không thể làm cho nó đúng.Rút ngắn câu lệnh if này trong Razor thành một dòng

@if(SiteMap.CurrentNode.Title == "Contact") 
{ 
    @:<div class="contact"> 
} 
+1

Có lẽ là một cách tốt hơn để làm điều đó mà không cần thẻ mất cân bằng. Vui lòng hiển thị thêm mã. – SLaks

+0

Câu lệnh if tôi muốn rút gọn. Mã khác không liên quan. – Todd

+0

Sai. Câu lệnh 'if' này là thiết kế kém. Với mã khác, chúng tôi có thể cho thấy cách thiết kế nó tốt hơn. – SLaks

Trả lời

20

Có thể có một giải pháp đơn giản hơn nhưng điều này nên làm việc:

@Html.Raw((SiteMap.CurrentNode.Title == "Contact") ? "<div class='contact'>" : "") 
+1

Hãy cẩn thận với Html.Raw, không mã hóa đầu ra! –

11

Một cách khác sẽ là:

@if(SiteMap.CurrentNode.Title == "Contact") { <text><div class="contact"></text> } 

Cá nhân tôi thấy nó dễ đọc hơn so các nhà điều hành ternary, nhưng đây là cá nhân

+0

Tôi thích khả năng đọc của điều này quá nhưng vấn đề duy nhất là khi bạn nhấn CTRL K + D trong Visual Studio nó giảm xuống 3 dòng :( –

5

Cách ngắn nhất có thể thực hiện là:

@(SiteMap.CurrentNode.Title == "Contact" ? "<div class='contact'>" : "") 

hoặc

@(SiteMap.CurrentNode.Title == "Contact" ? @"<div class=""contact"">" : "") 

hoặc thậm chí ngắn hơn nếu bạn không lặp lại mã html của bạn

<div class="@(SiteMap.CurrentNode.Title == "Contact" ? "contact" : "")"> 
Các vấn đề liên quan