簡體   English   中英

MVC 5 Razor視圖在if條件下不呈現HTML

[英]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.TreeForest.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM