mvc if 显示html,asp.net mvc - 在MVC3 Razor中,如何在动作中获取渲染视图的html?
@Chev上面接受的答案很好,但我想渲染特定操作的結果,而不僅僅是特定的視圖。
此外,我需要能夠將參數傳遞給該操作,而不是依賴于注入模型。
所以我想出了我自己的方法,我把它放在我的控制器的基類中(讓它們全部可用):
protected string RenderViewResultAsString(ViewResult viewResult)
{
using (var stringWriter = new StringWriter())
{
this.RenderViewResult(viewResult, stringWriter);
return stringWriter.ToString();
}
}
protected void RenderViewResult(ViewResult viewResult, TextWriter textWriter)
{
var viewEngineResult = this.ViewEngineCollection.FindView(
this.ControllerContext,
viewResult.ViewName,
viewResult.MasterName);
var view = viewEngineResult.View;
try
{
var viewContext = new ViewContext(
this.ControllerContext,
view,
this.ViewData,
this.TempData,
textWriter);
view.Render(viewContext, textWriter);
}
finally
{
viewEngineResult.ViewEngine.ReleaseView(this.ControllerContext, view);
}
}
假設我有一個名為Foo的動作,它接受一個模型對象和一些其他參數,它們共同影響將使用的視圖:
public ViewResult Foo(MyModel model, int bar)
{
if (bar == 1)
return this.View("Bar1");
else
return this.View("Bar2", model);
}
現在,如果我想獲得調用操作Foo的結果,我可以通過調用Foo方法獲取ViewResult,然后調用RenderViewResultAsString以獲取HTML文本:
var viewResult = this.Foo(model, bar);
var html = this.RenderViewResultAsString(viewResult);
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的mvc if 显示html,asp.net mvc - 在MVC3 Razor中,如何在动作中获取渲染视图的html?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5 建筑物模型,基于HTML5的
- 下一篇: 已锁定计算机,计算机锁定怎么解除_计算机