我需要像在 ASP.NET MVC 中一样使用 Html.RenderAction。
例如,我有一个包含新闻和产品的主页。
例如我想做
@Html.RenderAction("/api/products/featured")
这将启动一个新的服务调用并将模板输出到 html 流。
使用 ServiceStack Razor 是否可以实现这一点?如果可以,我该如何实现?
最佳答案
PartialExamples.cshtml测试页面显示了在页面内渲染 Razor View 的不同示例,例如:
使用新的 RenderToAction()
方法,该方法允许您执行服务,并使用路由和查询字符串呈现部分 View ,例如:
@Html.RenderAction("/products/1")
如果您想要与默认 View 不同的 View ,这还需要一个可选的 View 名称:
@Html.RenderAction("/products/1", "CustomProductView")
还有普通的 Html.Partial()
来指定要在页面中呈现的 View 和模型,例如:
@Html.Partial("GetProduct",
base.ExecuteService<ProductService>(s => s.Any(new GetProduct { Id = 1 })))
ExecuteService
只是 using 语句中等效 ResolveService
的包装,即:
@{
Response response = null;
using (var service = base.ResolveService<ProductService>())
{
response = service.Any(new GetProduct { Id = 1 });
}
}
@Html.Partial("GetProduct", response)
Razor Views 中的新 RenderToAction()
方法已在 v4.0.34+ 中添加,现在为 available on MyGet .
关于asp.net-mvc - ServiceStack Razor - Html.RenderAction 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028447/