You can only get the rendered HTML after the point at which your block is rendered to tapestry's MarkupWriter.
So, you only have an opportunity to get the HTML in a full page render request or an AJAX event request which causes a partial page render Getting the HTML in a non-ajax action (ie your action) is not (easily) possible since tapestry doesn't render anything to the MarkupWriter in the action request. Instead, tapestry returns a 304 redirect and the render happens in the subsequent request.