現在のURLまたは_Layoutsフォルダーのファイルにアクセスする方法は?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/1614

  •  16-10-2019
  •  | 
  •  

質問

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としてアクセスできます。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top