การใช้ประโยชน์ได้ดีคือถ้าคุณต้องการสร้าง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()โดยไม่คำนึงถึงอินเตอร์เฟส