我有一個問題,我的動態生成的HTML越來越逃脫和輸出在屏幕上。繼承人我有什麼:剃刀逃離我的HTML,即使我使用Html.Raw
@{
string TrialMessage = string.Empty;
if ((bool)ViewBag.msd.IsOnTrial == true)
{
var expDate = (DateTime)ViewBag.msd.RenewalDate;
var daysToTrialExpiation = expDate.AddDays(1) - System.DateTime.UtcNow;
TrialMessage = "<b>Trial Ends in: <span style=\"color:[Color];\">" + (daysToTrialExpiation.Days) + "</span> Days</b>";
if (daysToTrialExpiation.Days > 5)
{
TrialMessage = TrialMessage.Replace("[Color]", "green");
}
else if (daysToTrialExpiation.Days > 2)
{
TrialMessage = TrialMessage.Replace("[Color]", "orange");
}
else if (daysToTrialExpiation.Days > 0)
{
TrialMessage = TrialMessage.Replace("[Color]", "red");
}
else
{
TrialMessage = "<b style=\"color: red;\"> Trial Ended " + Math.Abs(daysToTrialExpiation.Days) + " Days Ago</b>";
}
}
}
當我使用的查看TrialMessage,我發現了逃跑的版本在屏幕上輸出:
<b>Trial Ends in: <span style="color:green;">15</span> Days</b>
我曾嘗試使用Html.Raw(TrialMessage)
我我甚至試圖用相同的結果手動創建一個HTMLString
。我錯過了什麼?
更新:我輸出它的視圖的方法是:
@Html.Raw(TrialMessage)
只是一個簡短的說明;我強烈建議不要在視圖中執行這樣的邏輯。我建議爲這個視圖建立一個ViewModel類來計算你的到期時間,這樣你就可以在視圖中沒有這個邏輯的情況下發送正確的值到視圖。這也會導致到期計算在其他地方可以重複使用而無需重複使用(如果遵循良好的OOP原則)。您可能還想看看int,讓一些客戶HtmlHelpers幫助您生成自定義html ...再一次避免在視圖中儘可能進行處理。 ()) – quakkels
發佈你正在做的整個代碼行Html.Raw() – iamkrillin
@quakkels,謝謝你的建議,昨天晚上很晚,我需要儘快解決這個問題(雖然沒有發生)是的,一定要確保這樣做。這就是說,這個問題仍然困擾着我,因爲我找不到任何錯誤和它不工作大聲笑 – hjavaher