我遇到了剃鬚刀和模型的問題。MVC.net剃刀子串中的問題
在我看來,我有一個與「文章」對象列表的模型。
所以我做了一個foreach @MvcHtmlString.Create(article.Intro)
這很好。
然後,當我想要介紹的一個子:
@MvcHtmlString.Create(article.Intro).ToHtmlString().Substring(0, 50)
的頁面中無限循環結束沒有錯誤(當剃刀無法呈現的東西這經常發生)。
有誰知道我怎麼能得到這個子字符串?
我遇到了剃鬚刀和模型的問題。MVC.net剃刀子串中的問題
在我看來,我有一個與「文章」對象列表的模型。
所以我做了一個foreach @MvcHtmlString.Create(article.Intro)
這很好。
然後,當我想要介紹的一個子:
@MvcHtmlString.Create(article.Intro).ToHtmlString().Substring(0, 50)
的頁面中無限循環結束沒有錯誤(當剃刀無法呈現的東西這經常發生)。
有誰知道我怎麼能得到這個子字符串?
爲什麼不直接將您的文章串入?
@MvcHtmlString.Create(article.Intro.Substring(0, 50))
這可能會導致不正確的行爲。如果位置49的子串開始新的表標記,那麼輸出將是「... blablabla
這個問題以任何方式存在; MvcHtmlString只是告訴視圖引擎不要HtmlEncode字符串值 - 又名「」不變成「<範圍>」。 – Tejs 2011-03-23 12:14:17
這也不起作用。我先試了一下。即使當我的所有字符串都大於20時,我也會做article.Intro.Substring(0,2)頁面進入無限循環。我認爲它與剃刀綁定數據的方式有關。我已經解決了另一種方式,但我想知道爲什麼會發生這種情況(它經常發生) – Nealv 2011-03-23 12:23:17
Substring(0, 50)
拋出ArgumentOutOfRangeException異常,如果你的任何文章的前奏是超過50個字符短。這可能是你奇怪問題的原因。
此外,使用MvcHtmlString是不正確的,因爲你的數據顯然不是HTML編碼。
因此,一個解決辦法是:
@article.Intro.Substring(0, Math.Min(article.Intro.Length, 50))
你爲什麼要使用_MvcHtmlString.Create_(而不只是@ article.Intro)?你的_Intro_字段已經被HTML編碼了嗎?如果不是,則導致XSS漏洞。如果是這樣,那麼你不能只使用_Substring_,因爲它可能會切斷像&這樣的實體。 – Codo 2011-03-23 12:15:53
@ article.intro只是簡單的nvarchar從數據庫,我做了mvchtmlstring,因爲我把它可能會解決我的子字符串問題,因爲我不是直接在屬性上工作,而是在本地創建的htmlstring – Nealv 2011-03-23 12:25:20