コード例 #1
0
        public ActionResult Search(string query)
        {
            var result = new List <SearchResult>();

            foreach (var action in (ActionType[])Enum.GetValues(typeof(ActionType)))
            {
                var actionString = action.ToString().ToLower();
                var doc          = new HtmlDocument();
                var html         = this.RenderView(actionString, new ViewDataDictionary());
                doc.LoadHtml(html);
                var headerNode = doc.DocumentNode.SelectSingleNode("//span[@class='hdr']");
                var descrNode  = doc.DocumentNode.SelectSingleNode("//p[@class='dscr']");
                var header     = headerNode != null ? headerNode.InnerText : string.Empty;
                var descr      = descrNode != null ? descrNode.InnerText : string.Empty;

                if (!string.IsNullOrEmpty(query) && doc.DocumentNode.InnerText.ToLowerInvariant().Contains(query.ToLowerInvariant()))
                {
                    result.Add(new SearchResult {
                        Module      = "partners",
                        Name        = actionString,
                        Resource    = Highliter.HighliteString(header, query).ToHtmlString(),
                        Description = Highliter.HighliteString(descr, query).ToHtmlString(),
                        Url         = Url.Action(actionString, "partners")
                    });
                }
            }

            ViewData["query"]  = query ?? string.Empty;
            ViewData["result"] = result;
            return(View(new Dictionary <MsDocEntryPoint, Dictionary <MsDocEntryPointMethod, string> >()));
        }
コード例 #2
0
        public static List <SearchResult> Search(string query, UrlHelper url)
        {
            var q      = query.ToLowerInvariant();
            var result = new List <SearchResult>();

            var sections = _entries.SelectMany(m => m.Value.Values);

            foreach (var section in sections)
            {
                var action = string.Format("{0}/{1}", section.Path, section.Name);
                if (section.Name.ToLowerInvariant().Contains(q) || (!string.IsNullOrEmpty(section.Description) && section.Description.ToLowerInvariant().Contains(q)))
                {
                    result.Add(new SearchResult
                    {
                        Module      = "docbuilder",
                        Name        = action,
                        Resource    = Highliter.HighliteString(section.Name, query).ToHtmlString(),
                        Description = Highliter.HighliteString(section.Description, query).ToHtmlString(),
                        Url         = url.Action(action, "docbuilder")
                    });
                }

                foreach (var method in section.Methods.Values)
                {
                    if (method.Name.ToLowerInvariant().Contains(q) || (!string.IsNullOrEmpty(method.Description) && method.Description.ToLowerInvariant().Contains(q)))
                    {
                        var methodAction = string.Format("{0}/{1}", action, method.Name);
                        result.Add(new SearchResult
                        {
                            Module      = "docbuilder",
                            Name        = methodAction,
                            Resource    = Highliter.HighliteString(method.Name, query).ToHtmlString(),
                            Description = Highliter.HighliteString(method.Description, query).ToHtmlString(),
                            Url         = url.Action(methodAction, "docbuilder")
                        });
                    }
                }
            }

            foreach (var type in _globals)
            {
                if (type.Key.ToLowerInvariant().Contains(q) || (!string.IsNullOrEmpty(type.Value.Description) && type.Value.Description.ToLowerInvariant().Contains(q)))
                {
                    var action = string.Format("{0}#{1}", url.Action("global", "docbuilder"), type.Key);
                    result.Add(new SearchResult
                    {
                        Module      = "docbuilder",
                        Name        = action,
                        Resource    = Highliter.HighliteString(type.Key, query).ToHtmlString(),
                        Description = Highliter.HighliteString(type.Value.Description, query).ToHtmlString(),
                        Url         = action
                    });
                }
            }

            return(result);
        }
コード例 #3
0
        public ActionResult Search(string query)
        {
            var result = new List <SearchResult>();

            foreach (var action in _actionMap)
            {
                var actionString = action.ToLower();
                var doc          = new HtmlDocument();
                try
                {
                    var html = this.RenderView(actionString, new ViewDataDictionary());
                    doc.LoadHtml(html);
                }
                catch (Exception e)
                {
                    LogManager.GetLogger("ASC.Api").Error(e);
                }
                var content = doc.DocumentNode;
                if (content.SelectSingleNode("html") != null)
                {
                    content = content.SelectSingleNode("//div[contains(@class, 'layout-content')]");
                }

                if (!string.IsNullOrEmpty(query) && content != null && content.InnerText.ToLowerInvariant().Contains(query.ToLowerInvariant()))
                {
                    var headerNode = doc.DocumentNode.SelectSingleNode("//span[@class='hdr']");
                    var descrNode  = doc.DocumentNode.SelectSingleNode("//p[@class='dscr']");
                    var header     = headerNode != null ? headerNode.InnerText : string.Empty;
                    var descr      = descrNode != null ? descrNode.InnerText : string.Empty;
                    result.Add(new SearchResult
                    {
                        Module      = "docbuilder",
                        Name        = actionString,
                        Resource    = Highliter.HighliteString(header, query).ToHtmlString(),
                        Description = Highliter.HighliteString(descr, query).ToHtmlString(),
                        Url         = Url.Action(actionString, "docbuilder")
                    });
                }
            }

            result.AddRange(DocBuilderDocumentation.Search(query, Url));

            ViewData["query"]  = query ?? string.Empty;
            ViewData["result"] = result;
            return(View(new Dictionary <MsDocEntryPoint, Dictionary <MsDocEntryPointMethod, string> >()));
        }