There's a new HtmlHelper.IdFor(...) method, just use this one...
public static MvcHtmlString Span<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, string text)
{
var tagBuilder = new TagBuilder("span");
var id = helper.IdFor(expression);
tagBuilder.Attributes.Add("id", id.ToString());
return new MvcHtmlString(tagBuilder.ToString());
}
usage
@Html.Span(m => m.ZClass2.Name, "Just some text")
this won't render ZClass1.ZClass2, but the usual id renderers from HtmlHelpers extension method.