ServiceStack includes another razor page on the razor page

I want to add a typed subpage on the razor page. I know that SS is not the same as an MVC razor. The way to do this can be a little different.

So far this is what I found out (looks ugly, iknow ...):

//this is somewhere in your default.cshtml @{ //grab your service from Ioc using(var service = Get<RockstarsService>()) { //execute the service to get a response var resp = service.Get(new Rockstars()); //call the partial razor page Rockstar.cshtml <p>@Html.Partial("Rockstars",resp)</p> //or @Html.Partial("Rockstars") will do, seems like the resp is cached anyway //or @Include("Rockstars",resp) will work, too. } } 

This is a WORKS solution with a typed model subpage , provided that the subpage does not contain any html helpers.

However, if there are html helpers on the subpage, for example

 @Html.Label("sometag") //PROBLEM HERE <--------------------- 

or

 @Html.TextBox("name","text") //PROBLEM HERE <--------------------- 

Then it will throw out Server Error:

 Server Error in '/' Application. Could not execute partial: Rockstars, model: RazorRockstars.WebHost.RockstarsResponse Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.InvalidOperationException: Could not execute partial: Rockstars, model: RazorRockstars.WebHost.RockstarsResponse Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [InvalidOperationException: Could not execute partial: Rockstars, model: RazorRockstars.WebHost.RockstarsResponse] ServiceStack.Razor.Templating.TemplateService.RenderPartial(T model, String name) +333 ServiceStack.Razor.RazorFormat.RenderPartial(String pageName, Object model, Boolean renderHtml, IHttpRequest httpReq) +433 ServiceStack.Html.HtmlHelper.Partial(String viewName, Object model) +117 CompiledRazorTemplates.Dynamic.fdbaecbccda.Execute() +454 ServiceStack.Razor.Templating.TemplateService.ExecuteTemplate(T model, String name, String defaultTemplatePath, IHttpRequest httpReq, IHttpResponse httpRes) +457 ServiceStack.Razor.RazorFormat.ExecuteTemplate(T model, String name, String templatePath, IHttpRequest httpReq, IHttpResponse httpRes) +117 ServiceStack.Razor.RazorFormat.ProcessRazorPage(IHttpRequest httpReq, ViewPageRef razorPage, Object dto, IHttpResponse httpRes) +142 ServiceStack.Razor.RazorHandler.ProcessRequest(IHttpRequest httpReq, IHttpResponse httpRes, String operationName) +535 ServiceStack.WebHost.Endpoints.Support.EndpointHandlerBase.ProcessRequest(HttpContext context) +264 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +341 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69 

(Bloody VS Razor breakpoints do not work because it is a pure SS, not an MVC project. It makes it difficult for me to identify the problem ... but this is another story)

Any help would be great.

+4
source share

Source: https://habr.com/ru/post/1438885/


All Articles