MVC3 Razor: แสดง html ภายในโค้ดบล็อค


131

ในไฟล์ cshtml ของฉันฉันมีบล็อกมากมายที่มีสิ่งเหล่านี้:

@if(Model.foo)
{
    <span>Hello World</span>
}

เหตุผลเดียวที่ทำให้สแปนนั้นเป็นเพราะฉันไม่พบวิธีอื่นใดที่จะบังคับให้มันรับรู้ว่า "Hello World" เป็นส่วนหนึ่งของ html เว้นแต่ฉันจะล้อมรอบด้วยแท็ก html มีวิธีที่ดีในการหลีกเลี่ยงโค้ดที่ไม่เกี่ยวข้องกับการเพิ่มแท็กที่ไม่มีความหมายลงในจอแสดงผลหรือไม่?

คำตอบ:


227

คุณสามารถใช้@:เพื่อหลบหนี:

@if(Model.foo)
{
    @:Hello World
}

หรือ<text>แท็กพิเศษที่ไม่ได้ส่งออกมาในการตอบกลับ:

@if(Model.foo)
{
    <text>Hello World</text>
}


10

คุณสามารถเพิ่มข้อความได้ดังนี้:

@if(Model.foo)
{
    @:Hello World
}

เมื่อคุณใช้@มีดโกนให้เปลี่ยนเป็นโหมดบล็อกรหัส ดังนั้นคุณต้องระบุข้อความตามด้านบน



8

นักพัฒนาหลายคนได้ให้หลายวิธีข้างต้น .. นี่คืออีกหนึ่งวิธีที่ใช้งานได้ดีใน MVC 4 .. ฉันหวังว่ามันจะใช้ได้กับ MVC 3 ด้วย ..

@if(Model.foo)
{
    @Html.Label("Hello World")
}

0

คำตอบข้างต้นดีมาก ฉันจะรวมลิงค์ไปยังบทความของ Scott Guthrie เกี่ยวกับเรื่องนี้เนื่องจากจะแสดงตัวอย่างและคำอธิบายเพิ่มเติม

https://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax

@if (p.UnitsInStock == 0 {
  <text>
    Donec in ante vitae purus consequat laoreet ut elementum
    purus. Ut ut tempus nulla, quis ultrices est. Integer
    pharetra ante in lectus porta, a lacinia ex faucibus. 
    Aliquam magna risus, pretium vel neque at, laoreet 
    ultrices lectus. Morbi posuere luctus risus. Nullam 
    tincidunt massa egestas nunc tempor scelerisque.  
  </text>
}


@if (p.UnitsInStock == 0 {
  @: Line 1
  @: Line 2
  @: Line 3
}

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.