ด้วยเอ็นจิ้นการดู WebForms ฉันมักจะใช้โอเปอร์เรเตอร์สำหรับเงื่อนไขที่ง่ายมากโดยเฉพาะในแอตทริบิวต์ HTML ตัวอย่างเช่น:
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
รหัสด้านบนจะให้<a>
แท็กเป็นคลาสauth
หรือanon
ขึ้นอยู่กับว่าผู้ใช้รับรองความถูกต้อง
ไวยากรณ์ที่เทียบเท่ากับเอ็นจิ้นมุมมองมีดโกนคืออะไร? เนื่องจากมีดโกนต้องใช้แท็ก HTML เพื่อ "รู้" เมื่อต้องกระโดดเข้าและออกจากรหัสและมาร์กอัปฉันจึงติดอยู่กับสิ่งต่อไปนี้:
@if(User.Identity.IsAuthenticated) { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
นี่คือที่จะนำมันอย่างอ่อนโยนน่ากลัว
ฉันชอบที่จะทำอะไรบางอย่างเช่นนี้ แต่กำลังดิ้นรนเพื่อให้เข้าใจวิธีการในมีดโกน:
<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
-
ปรับปรุง:
ในระหว่างนี้ฉันได้สร้าง HtmlHelper นี้:
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
ซึ่งสามารถเรียกสิ่งนี้ได้จากมีดโกน:
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
แต่ถึงกระนั้นฉันหวังว่าจะมีวิธีการใช้ผู้ประกอบการที่สามโดยไม่ต้องถอยกลับไปห่อในวิธีการขยาย
IHtmlString
ที่มีวิธีการnew HtmlString("Some stuff here");
สำหรับผู้ช่วยเหลือ ฯลฯ ...