这是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
中的项目TreeResultObj属于Forest.SearchData.Results
ForestView.cshtml
是最初加载的主视图,并显示_TreeSearch
部分的搜索输入
输入搜索条件并单击“搜索”按钮(所有这些都来自_TreeSearch
) - ajax调用为make,TreeSearch(id tree)
操作被调用
该操作再次返回主“ForestView” - 但是现在填充了模型属性“TreeResultObj”。所以'ForestView'中'if conditon'中的代码执行并调用另一个partial来将内容作为HTML字符串返回,该字符串保存在'resultHtml'变量中
此时我可以看到像"<Text>blah blah blah</text>"
这样的Html Sting
然而,尝试在主“ForestView”中的搜索面板下方显示HTML字符串是行不通的 - 我几乎尝试了所有方法。
if条件中的任何文本都没有呈现 - 它是一个ajax调用,因此没有页面刷新 - 我可以看到HTML字符串值并将其保存为Model属性但无法在主视图中显示它。 任何帮助将非常感激。提前谢谢。
答案 0 :(得分:1)
此时,您只是调用方法并忽略结果。尝试:
@: @Html.Raw(resultHtml)
@:
切换到输出模式。注意:如果您使用了明显标记的内容,它将自动切换。例如:
<div>@Html.Raw(resultHtml)</div>
答案 1 :(得分:0)
我也遇到了同样的问题,但我可以让它发挥作用。我想打开一个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都可以工作
快乐编码
塔拉克
答案 2 :(得分:-1)
1 - 渲染中的内容应该违反HTML语法,而Razor通常不会呈现错误的HTML内容。 2 - 将HTML.Raw(resultHtml)包含在dev。
中答案 3 :(得分:-1)
在一整天的数万次测试中: 改变使用:
@Html.Raw(Html.DisplayFor(modelItem => item.Mensagem))
由:
@Html.Raw(Html.DisplayTextFor(modelItem => item.Mensagem))
您将获得带有任何&lt;&gt; !!!
的呈现HTML