[英]MVC 5 Razor view not rendering HTML within if condition
這是MVC 5剃刀視圖代碼:ForestView.cshtml
@model Forest.Tree
@{
var resultHtml = string.Empty;
}
<div id="divTreeSearch>
@(Html.Kendo().PanelBar().
Name("panelbar")
.Items(panelbar =>
{panelbar.Add()
.Content(@<text>@Html.Partial("_TreeSearch", Model, ViewData)</text>);}))
</div>
<div id="divTreeSearchResult">
@if(Model.TreeResultObj != null)
{
resultHtml = Html.ContentFromPartial("_TreeReport", Model.TreeResultObj);
@Html.Raw(resultHtml); -- Not working
@Html.Raw(HttpUtility.HtmlDecode(resultHtml)); -- Not Working
Html.Raw(resultHtml); -- Not working
Html.Raw(HttpUtility.HtmlDecode(resultHtml)); -- Not Working
Model.resultStringSaved = resultHtml;
@Html.DisplayText("resultStringSaved"); -- Not Working
@Html.Raw("<text>Test</text>") -- Even this is not working
}
@Html.Raw(Model.resultStringSaved) -- Not Working
@Html.Raw(HttpUtility.HtmlDecode(Model.resultStringSaved)) -- Not Working
@Html.DisplayText("resultStringSaved") -- Not Working
@Html.Raw("<text>Test</text>") -- This is Working
</div>
ForestView.cshtml - @model Forest.Tree _TreeSearch.cshtml - @model Forest.Tree _TreeReport.cshtml - @model Forest.SearchData.Results
模型Forest.Tree中的項目Forest.Tree
是Forest.SearchData.Results
類型
ForestView.cshtml
是最初加載並顯示_TreeSearch
部分搜索輸入的主視圖當輸入搜索條件並單擊“搜索”按鈕時(所有這些都來自_TreeSearch
) - ajax調用是make和TreeSearch(id tree)
動作被調用
該操作再次返回主“ForestView” - 但現在填充了模型屬性“TreeResultObj”。 所以'ForestView'中'if conditon'中的代碼執行並調用另一個partial來將內容作為HTML字符串返回,該字符串保存在'resultHtml'變量中
在這一點上,我可以看到Html Sting像"<Text>blah blah blah</text>"
但是試圖在主要的'ForestView'中的搜索面板下面顯示HTML字符串是行不通的 - 我幾乎嘗試了所有可能的方式。
if條件中的任何文本都不會呈現 - 它是一個ajax調用,因此沒有頁面刷新 - 我可以看到HTML字符串值並將其保存為Model屬性但無法在主視圖中顯示它。 任何幫助將非常感激。 提前致謝。
此時,您只是調用方法並忽略結果。 嘗試:
@: @Html.Raw(resultHtml)
@:
切換到輸出模式。 注意:如果您使用了明顯標記的內容,它將自動切換。 例如:
<div>@Html.Raw(resultHtml)</div>
我也面臨着同樣的問題,但我可以讓它發揮作用。 我想打開一個div開始並有條件地在for循環中結束它。
在@Html.Raw之前放置任何虛擬HTML元素
<div id="divTreeSearchResult">
@if(Model.TreeResultObj != null)
{
resultHtml = Html.ContentFromPartial("_TreeReport", Model.TreeResultObj);
<span>dummySpan</span>
@Html.Raw(resultHtml);
@Html.Raw(HttpUtility.HtmlDecode(resultHtml));
@Html.Raw(resultHtml);
@Html.Raw(HttpUtility.HtmlDecode(resultHtml));
Model.resultStringSaved = resultHtml;
@Html.DisplayText("resultStringSaved");
@Html.Raw("<text>Test</text>")
}
@Html.Raw(Model.resultStringSaved)
@Html.Raw(HttpUtility.HtmlDecode(Model.resultStringSaved))
@Html.DisplayText("resultStringSaved")
@Html.Raw("<text>Test</text>")
</div>
放置一個虛擬html元素之后,所有下面的@ Html.Raw都可以工作
快樂的編碼
塔拉克
1 - 來自渲染的內容應該違反HTML語法,Razor通常不會呈現錯誤的HTML內容。 2 - 將HTML.Raw(resultHtml)包含在dev中。
經過一整天的數萬次測試:更改使用:
@Html.Raw(Html.DisplayFor(modelItem => item.Mensagem))
通過:
@Html.Raw(Html.DisplayTextFor(modelItem => item.Mensagem))
你將獲得任何<>的渲染HTML!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.