現在のURLまたは_Layoutsフォルダーのファイルにアクセスする方法は?
質問
ASPX Webページのコードの背後にある私のコードは transform.xsl カスタムXSLT変換を行うには。
シナリオ1: :_layoutsフォルダーからファイルを取得してみてください。
SPWeb web = SPContext.Current.Web;
SPFile file = web.GetFile(@"/layouts/MyFeature/transform.xsl");
注:ファイルはこのURLでアクセス可能です http:// mysite:8080/_layouts/myfeature/transform.xsl ブラウザを使用する場合。
シナリオ2: :現在(http:// mysite:8080/myfeature/mypage.aspx)urlからファイルを取得してみてください。
SPWeb web = SPContext.Current.Web;
SPFile file = web.GetFile(@"transform.xsl");
また
SPFile file = web.GetFile(@"MyFeature/transform.xsl");
また
SPFile file = web.GetFile(@"/MyFeature/transform.xsl");
すべてのシナリオが失敗しました、これを解決する方法は?
解決
「transform.xsl」は「myfeature/transform.xsl」にあり、Anders Raskのヒントに従いました。私のコードは今のように見えます。
SPWeb web = SPContext.Current.Web;
XslCompiledTransform transformer = new XslCompiledTransform();
XsltSettings settings = new XsltSettings(true, true);
string xslLocation = web.Url + "/FormWrapper/transform.xsl";
transformer.Load(xslLocation, settings, GetResolverWithDefaultCredentials());
// Do XSLT transform...
解決
spweb.getFile()は、default.aspxのようにサイトページを返します。また、XSLTファイルは_layoutsフォルダーにある場合はSpfileではありません。
代わりに、以下のコードに似たものを試してみてください(ボイラープレートコードに注意するので、エラー処理などを追加する必要があります)
// fetch xsl processor
XslCompiledTransform processor = GetXslt(@"/layouts/MyFeature/transform.xsl");
StringWriter writer = new StringWriter(CultureInfo.CurrentCulture);
// Transform XSLT code here
private static XslCompiledTransform GetXslt(string xsltUrl)
{
XslCompiledTransform processor = new XslCompiledTransform(false);
bool enableDocumentFunctions = true;
bool enableScript = true;
XsltSettings settings = new XsltSettings(enableDocumentFunctions, enableScript);
// add error handling here
processor.Load(xsltUrl, settings, GetResolverWithDefaultCredentials());
return processor;
}
// use resolver to avoid getting security exceptions
private static XmlUrlResolver GetResolverWithDefaultCredentials()
{
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;
return resolver;
}
他のヒント
transform.xslをドキュメントライブラリ(たとえばスタイルライブラリ)に「アップロード」するモジュール機能を記述することができます。これにより、ファイルにSpfileとしてアクセスできます。
所属していません sharepoint.stackexchange