การใช้ประโยชน์ได้ดีคือถ้าคุณต้องการสร้างHtmlHelper
ส่วนขยายของคุณเอง ตัวอย่างเช่นฉันเกลียดการพยายามจดจำ<link>
ไวยากรณ์แท็กดังนั้นฉันจึงสร้างวิธีส่วนขยายของตัวเองเพื่อสร้าง<link>
แท็ก:
<Extension()> _
Public Function CssBlock(ByVal html As HtmlHelper, ByVal src As String, ByVal Optional ByVal htmlAttributes As Object = Nothing) As MvcHtmlString
Dim tag = New TagBuilder("link")
tag.MergeAttribute("type", "text/css")
tag.MergeAttribute("rel", "stylesheet")
tag.MergeAttribute("href", src)
tag.MergeAttributes(New RouteValueDictionary(htmlAttributes))
Dim result = tag.ToString(TagRenderMode.Normal)
Return MvcHtmlString.Create(result)
End Function
ฉันจะได้กลับมาString
จากวิธีนี้ แต่ถ้าฉันมีต่อไปนี้จะทำลาย:
<%: Html.CssBlock(Url.Content("~/sytles/mysite.css")) %>
ด้วยการMvcHtmlString
ใช้งาน<%: ... %>
หรือ<%= ... %>
จะทำงานอย่างถูกต้อง
MvcHtmlString
ว่าไม่ได้ใช้IHtmlString
เพราะมีเฉพาะใน 4 เท่านั้น<%:
ไวยากรณ์ต้องเป็ดชนิด - มันจะเรียก.ToHtmlString()
ก่อนเสมอ.ToString()
โดยไม่คำนึงถึงอินเตอร์เฟส