Với công cụ xem WebForms, tôi thường sử dụng toán tử ternary cho các điều kiện rất đơn giản, đặc biệt là trong các thuộc tính HTML. Ví dụ:
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
Đoạn mã trên sẽ cung cấp cho <a>
thẻ một lớp auth
hoặc anon
tùy thuộc vào việc người dùng có được xác thực hay không.
Cú pháp tương đương với công cụ xem dao cạo là gì? Bởi vì Razor yêu cầu các thẻ HTML để "biết" khi nào nên nhảy vào và ra khỏi mã và đánh dấu, nên tôi hiện đang bị mắc kẹt với những điều sau:
@if(User.Identity.IsAuthenticated) { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
Đây là, để đặt nó nhẹ, khủng khiếp .
Tôi rất thích làm một cái gì đó như thế này, nhưng đang đấu tranh để hiểu làm thế nào trong Dao cạo:
<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
-
Cập nhật:
Trong thời gian chờ đợi, tôi đã tạo HtmlHelper này:
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
có thể được gọi như thế này từ Dao cạo:
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
Tuy nhiên, tôi hy vọng có một cách để sử dụng toán tử ternary mà không quay lại gói nó trong một phương thức mở rộng.
IHtmlString
với phương thứcnew HtmlString("Some stuff here");
dành cho người trợ giúp, v.v ...