1

検索機能が組み込まれたCMS(SharePoint 2013)でホストされているASP.NETWebアプリケーションがあります。

検索を使用してファイルクエリを実行する場合、ファイルタイプの表示は、ピリオドなしでフォーマットされた拡張子文字列のみです。"PNG" or "JPG"

ファイルを取得しません。ファイルを説明するメタデータを取得するだけです。明確にするために、私はMIMEタイプやファイルオブジェクトを取得しません。拡張子文字列を取得するだけです。

このような質問をサイトで探しましたが、見つかりません。

次のように、文字列を返し、その署名に文字列入力を受け取り、あるタイプのオブジェクトコレクションを検索するある種のメソッドがあるようです。

最終結果:

static class FileIcons
{
    static public string PDF = string.Format("{0}", SPContext.Current.Site.ServerRelativeUrl + "_layouts/15/monkeysphere/images/icons/pdf.png");
    static public string Word = string.Format("{0}", SPContext.Current.Site.ServerRelativeUrl + "_layouts/15/monkeysphere/images/icons/word.png");
    static public string Generic = string.Format("{0}", SPContext.Current.Site.ServerRelativeUrl + "_layouts/15/monkeysphere/images/icons/file.png");

    static private Dictionary<String, String> IconUrls = new Dictionary<String,String>() 
                        {
                            {"JPG", Picture},{"JPEG", Picture},{"GIF", Picture},{"PNG", Picture},
                            {"PDF", PDF},{"DOC", Word},{"DOCX", Word},{"XLS", Excel},{"XLSX", Excel},{"PPT", PowerPoint},{"PPTX", PowerPoint}
                        };

    static public string GetIconUrlFromExtension(string extension)
    {
        var formattedExtension = extension.Trim().Replace(".","").ToUpper();
        if (string.IsNullOrEmpty(extension) || !IconUrls.ContainsKey(formattedExtension))
            return Generic;
        return IconUrls[formattedExtension];
    }
}
4

1 に答える 1

1

私はaDictionaryがより良いオプションだと思います。このようなもの:

public static class IconUrls {
    static Dictionary<string, string> _extensions;
    static string DefaultUrl = "~/siteroot/images/icons/genericicon.png";

    static IconUrls {
        extensions = new Dictionary<string, string>() {
            { "JPG", "~/siteroot/images/icons/jpegicon.png" }, 
            { "JPEG", "~/siteroot/images/icons/jpegicon.png" }
        }
    }

    public static Dictionary<string, string> Extensions {
        get {
            return _extensions;
        }
    }

    public static string GetIconUrl(string extension) {
    {
        if(string.IsNullOrEmpty(extension) || !_dictionary.ContainsKey(extension.Trim().ToUpper()))
            return DefaultUrl;
        return _extensions[extension.Trim().ToUpper()];
    }
}

マッピングをハードコーディングしないように、構成ファイルからマッピングをロードすることもできます。

于 2012-11-04T02:53:53.267 に答える