[英]Retrieving HTML generated using XSLT through AJAX in Umbraco
I am new to Umbraco, just want to get input on if the following is the way to go to retrieve HTML generated using XSLT through AJAX.
創建生成 HTML 的 XSLT 宏
將 XSLT 宏放在空白頁中
使用 AJAX 調用頁面
有一個更好的方法嗎?
我可以在 .NET 代碼中以編程方式運行 XSLT 宏並返回結果嗎? 這樣我就不必將 XSLT 宏放在空白頁上。
您可以嘗試umbraco.library.RenderMacroContent
來渲染 Xslt 宏。
http://our.umbraco.org/wiki/reference/umbracolibrary/rendermacrocontent
這是我用來在 Umbraco 中為 XSLT 宏獲取 HTML 的代碼。 設置一個 RestExtension 來返回這個內容。 代碼沒有經過精煉和硬編碼。 我從 xsltVisualize.aspx.cs 偷了這個
public static string GetMacroContent()
{
HttpRequest post = HttpContext.Current.Request;
Member umbMember = Member.GetCurrentMember();
string macroname = post["macroname"];
string content = string.Empty;
if(Member.IsLoggedOn() && !string.IsNullOrEmpty(macroname))
{
string xslt = "";
System.IO.StreamReader xsltFile =
System.IO.File.OpenText(
IOHelper.MapPath(SystemDirectories.Root + "/xslt/htmlcontent.xslt")
);
xslt = xsltFile.ReadToEnd();
xsltFile.Close();
// prepare support for XSLT extensions
xslt = macro.AddXsltExtensionsToHeader(xslt);
Dictionary<string, object> parameters = new Dictionary<string, object>(1);
parameters.Add("currentPage", library.GetXmlNodeById("1057"));
// apply the XSLT transformation
string xsltResult = "";
XmlTextReader xslReader = null;
try
{
xslReader = new XmlTextReader(new StringReader(xslt));
System.Xml.Xsl.XslCompiledTransform xsl = macro.CreateXsltTransform(xslReader, false);
xsltResult = macro.GetXsltTransformResult(new XmlDocument(), xsl, parameters);
}
catch(Exception ee)
{
xsltResult = string.Format(
"<div class=\"error\"><h3>Error parsing the XSLT:</h3><p>{0}</p></div>",
ee.ToString());
}
finally
{
xslReader.Close();
}
}
return content;
}
private static XPathNodeIterator GetXmlNodeById(string id)
{
if(UmbracoContext.Current.GetXml().GetElementById(id) != null)
{
XPathNavigator xp = UmbracoContext.Current.GetXml().CreateNavigator();
xp.MoveToId(id);
return xp.Select(".");
}
else
{
XmlDocument xd = new XmlDocument();
xd.LoadXml(string.Format("<error>No published item exist with id {0}</error>", id));
return xd.CreateNavigator().Select(".");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.