我有要求使用Html.RenderAction就像你在ASP.NET MVC。ServiceStack剃刀 - Html.RenderAction等效
例如,我有一個新聞和產品的主頁上。
我想例如
@Html.RenderAction("/api/products/featured")
這將啓動一個新的服務電話和輸出模板到HTML流做。
這可能使用ServiceStack剃刀,如果是的話,我該如何實現它?
我有要求使用Html.RenderAction就像你在ASP.NET MVC。ServiceStack剃刀 - Html.RenderAction等效
例如,我有一個新聞和產品的主頁上。
我想例如
@Html.RenderAction("/api/products/featured")
這將啓動一個新的服務電話和輸出模板到HTML流做。
這可能使用ServiceStack剃刀,如果是的話,我該如何實現它?
的PartialExamples.cshtml測試頁面顯示渲染Razor視圖頁面內,例如不同的例子:
使用新RenderToAction()
方法,它可以讓你執行一個服務,它的渲染與路線和查詢字符串,如局部視圖:
@Html.RenderAction("/products/1")
這也有一個可選的視圖名稱,如果你想比默認了不同的看法:
@Html.RenderAction("/products/1", "CustomProductView")
還有正常Html.Partial()
來指定要在頁面渲染的視圖和模型,如:
@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。
此附加功能現在滿足我的問題需求。 – James 2014-11-10 12:30:49
*我可以複製我的答案還是我失去了它在某種程度上
望着ServiceStack.Razor.ViewPage類有型ServiceStack.Html.HtmlHelper的html屬性。我沒有看到'RenderAction'作爲這個類的方法(或擴展方法),所以它看起來不可用。有一個'部分'方法需要ViewName和一個需要ViewName和一個對象的重載。根據您的上述評論,這似乎不是一個有用的解決方案。
如果我對上述內容正確,我認爲你需要你的'精選視圖模板'來提取數據。可以添加像
{ FeaturedResponse products = new JsonServiceClient("http://localhost").Get<FeaturedResponse>("/api/products/featured"); }
到您的模板。這將允許您像使用Model一樣使用產品變量。或者,使用JavaScript將數據拉入模板中。儘管如此,您將不得不使用JavaScript將數據存入HTML元素。
然後,您可以使用渲染@ Html.Partial( '精選')的模板
希望這有助於。
如果您能夠在'父'視圖中獲得精選產品,您可以嘗試像@ Html.RenderPage(「FeatureProducts。cshtml「,FeaturedProductsModel) – paaschpa 2013-02-22 17:28:01
我意識到,然而,使用RenderAction的全部目的是讓您消除對產品的依賴關係。 – James 2013-02-22 17:31:46