private static string ParseImpl(PageInfo pageInfo, ContextInfo contextInfo, string loading, string template, bool inline, string onBeforeSend, string onSuccess, string onComplete, string onError) { pageInfo.AddPageBodyCodeIfNotExists(PageInfo.Const.StlClient); //运行解析以便为页面生成所需JS引用 if (!string.IsNullOrEmpty(template)) { StlParserManager.ParseInnerContent(new StringBuilder(template), pageInfo, contextInfo); } var dynamicInfo = new DynamicInfo { ElementName = ElementName, SiteId = pageInfo.SiteId, ChannelId = contextInfo.ChannelId, ContentId = contextInfo.ContentId, TemplateId = pageInfo.TemplateInfo.Id, AjaxDivId = StlParserUtility.GetAjaxDivId(pageInfo.UniqueId), LoadingTemplate = loading, SuccessTemplate = template, OnBeforeSend = onBeforeSend, OnSuccess = onSuccess, OnComplete = onComplete, OnError = onError }; return(dynamicInfo.GetScript(ApiRouteActionsDynamic.GetUrl(pageInfo.ApiUrl), inline)); }
private static string ParseImpl(PageInfo pageInfo, ContextInfo contextInfo, string templateContent, bool isPageRefresh, string onBeforeSend, string onSuccess, string onComplete, string onError) { pageInfo.AddPageBodyCodeIfNotExists(PageInfo.Const.StlClient); var ajaxDivId = StlParserUtility.GetAjaxDivId(pageInfo.UniqueId); var functionName = $"stlDynamic_{ajaxDivId}"; if (string.IsNullOrEmpty(templateContent)) { return(string.Empty); } StlParserManager.ParseInnerContent(new StringBuilder(templateContent), pageInfo, contextInfo); var apiUrl = ApiRouteActionsDynamic.GetUrl(pageInfo.ApiUrl); var currentPageUrl = StlParserUtility.GetStlCurrentUrl(pageInfo.SiteInfo, contextInfo.ChannelId, contextInfo.ContentId, contextInfo.ContentInfo, pageInfo.TemplateInfo.TemplateType, pageInfo.TemplateInfo.Id, pageInfo.IsLocal); currentPageUrl = PageUtils.AddQuestionOrAndToUrl(currentPageUrl); var apiParameters = ApiRouteActionsDynamic.GetParameters(pageInfo.SiteId, contextInfo.ChannelId, contextInfo.ContentId, pageInfo.TemplateInfo.Id, currentPageUrl, ajaxDivId, isPageRefresh, templateContent); var builder = new StringBuilder(); builder.Append($@"<span id=""{ajaxDivId}""></span>"); builder.Append($@" <script type=""text/javascript"" language=""javascript""> function {functionName}(pageNum) {{ var url = ""{apiUrl}?"" + StlClient.getQueryString(); var data = {apiParameters}; if (pageNum && pageNum > 0) {{ data.pageNum = pageNum; }} var containerId = '{ajaxDivId}'; {onBeforeSend} stlClient.post(url, data, function (err, data, status) {{ if (!err) {{ {onSuccess} document.getElementById(containerId).innerHTML = data.html; }} else {{ {onError} }} {onComplete} }}); }} {functionName}(0); </script> "); return(builder.ToString()); }