Пример #1
0
        /// <summary>
        /// 转义URL字符串为对应的数据
        /// </summary>
        /// <param name="URL">URL string</param>
        /// <param name="IsRouteMode">is simply Route Mode,simply MVG mode</param>
        public void Parse(string URL, Boolean IsRouteMode = false)
        {
            //清空原数据
            Protocol  = "";
            Domain    = "";
            Path      = "";
            File      = "";
            SearchStr = "";
            Anchor    = "";
            URLParam.Clear();
            Is_Route_Mode = Is_Route_Mode || IsRouteMode;

            Regex           regExp;
            MatchCollection matchResult;

            string[] params_T;
            regExp      = new Regex(@"^(?<protocol>(https|http|ftp|file)(:\/{2,4}))?(?<domain>[^\s\/\\]+)?(?<path>[\/][^?#]*)?(?<searchStrOrAnchor>(\?[^#]*))?(?<anchor>#[^#]*)?");
            matchResult = regExp.Matches(URL);
            if (matchResult.Count > 0)
            {
                Protocol  = matchResult[0].Groups["protocol"].Value;
                Domain    = matchResult[0].Groups["domain"].Value;
                Path      = matchResult[0].Groups["path"].Value;
                File      = Path.Substring(Path.LastIndexOf("/") > 0 ? Path.LastIndexOf("/") + 1 : 0);
                Path      = Path.Substring(0, Path.LastIndexOf("/") == Path.Length ? Path.Length + 1 : Path.LastIndexOf("/") + 1);
                SearchStr = matchResult[0].Groups["searchStrOrAnchor"].Value;
                if (SearchStr.Substring(0, 1) == "#")
                {
                    Anchor    = SearchStr;
                    SearchStr = "";
                }
                else
                {
                    Anchor = matchResult[0].Groups["anchor"].Value;
                }
                if (SearchStr != "")
                {
                    params_T = SearchStr.Replace("?", "").Split('&');
                    foreach (var p in params_T)
                    {
                        var tt = p.Split('=');
                        URLParam.Add(tt[0], tt.Length > 1 ? tt[1] : "");
                    }
                }
            }
            Controller = "";
            Method     = "";
            if (Is_Route_Mode)
            {
                string          tSStr = Path;
                Regex           regExp1;
                MatchCollection matchResult1;
                regExp1      = new Regex(@"(?<controller>[^\/]+)\/(?<method>[^\/]+)");
                matchResult1 = regExp1.Matches(tSStr);
                Controller   = matchResult1[0].Groups["controller"].Value;
                Method       = matchResult1[0].Groups["method"].Value;
            }
        }
        private void LoadData()
        {
            DictionaryAppManager _dictionaryAppManager = new DictionaryAppManager();

            SearchType searchType = SearchType.Begins;
            if (BContains)
                searchType = SearchType.Contains;

            DictionarySearchResultCollection resultCollection = null;

            // Translate page number into offset.
            // One less than the current page number (with sanity check), times the page size
            // translates from a "first page is 1" page number to a "first record is zero" offset into the
            // list of results.
            int offset = ((CurrentPageIndex > 0 ? CurrentPageIndex : 1) - 1) * PageSize;

            if (!String.IsNullOrEmpty(SearchStr)) // SearchString provided, do a term search
            {
                SearchStr = Sanitizer.GetSafeHtmlFragment(SearchStr);
                resultCollection = _dictionaryAppManager.Search(SearchStr, searchType, offset, PageSize, NCI.Web.Dictionary.DictionaryType.drug, PageAssemblyContext.Current.PageAssemblyInstruction.Language);
            }

            if (resultCollection != null && resultCollection.Count() > 0)
            {
                //if there is only 1 record - go directly to definition view
                //check if expand equals "A", as this is the default value
                if (resultCollection.ResultsCount == 1)
                {
                    // Get the first (only) item so we can redirect to it specifically
                    IEnumerator<DictionarySearchResult> itemPtr = resultCollection.GetEnumerator();
                    itemPtr.MoveNext();

                    string urlItem = GetFriendlyName(itemPtr.Current.ID.ToString());

                    string itemDefinitionUrl = this.DictionaryRouter.GetDefinitionUrl() + urlItem;
                    Page.Response.Redirect(itemDefinitionUrl);
                }
                else
                {
                    resultListView.DataSource = resultCollection;
                    resultListView.DataBind();
                    NumResults = resultCollection.ResultsCount;
                    lblWord.Text = SearchStr.Replace("[[]", "[");
                    lblNumResults.Text = NumResults.ToString();
                    if (NumResults == 0)
                    {
                        RenderNoResults();
                    }
                }
            }
            else
            {
                RenderNoResults();
            }
        }
        private void LoadData()
        {
            DictionaryAppManager _dictionaryAppManager = new DictionaryAppManager();

            SearchType searchType = SearchType.Begins;

            if (BContains)
            {
                searchType = SearchType.Contains;
            }

            DictionarySearchResultCollection resultCollection = null;

            if (!String.IsNullOrEmpty(SearchStr)) // SearchString provided, do a term search
            {
                SearchStr = Sanitizer.GetSafeHtmlFragment(SearchStr);

                resultCollection = _dictionaryAppManager.Search(SearchStr, searchType, 0, int.MaxValue, NCI.Web.Dictionary.DictionaryType.term, PageAssemblyContext.Current.PageAssemblyInstruction.Language);
            }

            if (resultCollection != null && resultCollection.Count() > 0)
            {
                //if there is only 1 record - go directly to definition view
                if (resultCollection.ResultsCount == 1)
                {
                    // Get the first (only) item so we can redirect to it specifically
                    IEnumerator <DictionarySearchResult> itemPtr = resultCollection.GetEnumerator();
                    itemPtr.MoveNext();

                    string urlItem = GetFriendlyName(itemPtr.Current.ID.ToString());

                    string itemDefinitionUrl = this.DictionaryRouter.GetDefinitionUrl() + urlItem;

                    Page.Response.Redirect(itemDefinitionUrl);
                }
                else
                {
                    resultListView.DataSource = resultCollection;
                    resultListView.DataBind();
                    NumResults         = resultCollection.ResultsCount;
                    lblWord.Text       = SearchStr.Replace("[[]", "[");
                    lblNumResults.Text = NumResults.ToString();
                    if (NumResults == 0)
                    {
                        RenderNoResults();
                    }
                }
            }
            else
            {
                RenderNoResults();
            }
        }
Пример #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            GetQueryParams();
            SetupCanonicalUrl(this.DictionaryRouter.GetBaseURL());
            SetDoNotIndex();

            if (!string.IsNullOrEmpty(SrcGroup))
            {
                BContains = Convert.ToBoolean(SrcGroup);
            }

            this.dictionarySearchBlock.SearchBoxInputVal = HttpUtility.HtmlEncode(SearchStr);

            if (BContains == true)
            {
                this.dictionarySearchBlock.CheckRadioStarts   = "";
                this.dictionarySearchBlock.CheckRadioContains = "checked=\"checked\"";
            }

            //For Genetics dictionary language is always English
            DictionaryLanguage = "en";

            DictionarySearchResultCollection resultCollection      = null;
            DictionaryAppManager             _dictionaryAppManager = new DictionaryAppManager();

            SearchType searchType = SearchType.Begins;

            if (BContains)
            {
                searchType = SearchType.Contains;
            }

            if (!String.IsNullOrEmpty(SearchStr)) // SearchString provided, do a term search
            {
                SearchStr        = Sanitizer.GetSafeHtmlFragment(SearchStr);
                resultCollection = _dictionaryAppManager.Search(SearchStr, searchType, 0, int.MaxValue, NCI.Web.Dictionary.DictionaryType.genetic, DictionaryLanguage);
            }

            if (resultCollection != null && resultCollection.Count() > 0)
            {
                //if there is only 1 record - go directly to definition view
                if (resultCollection.ResultsCount == 1)
                {
                    // Get the first (only) item so we can redirect to it specifically
                    IEnumerator <DictionarySearchResult> itemPtr = resultCollection.GetEnumerator();
                    itemPtr.MoveNext();

                    string urlItem = GetFriendlyName(itemPtr.Current.ID.ToString());

                    string itemDefinitionUrl = this.DictionaryRouter.GetDefinitionUrl() + urlItem;
                    Page.Response.Redirect(itemDefinitionUrl);
                }
                else
                {
                    resultListView.DataSource = resultCollection;
                    resultListView.DataBind();
                    NumResults = resultCollection.ResultsCount;
                    if (!string.IsNullOrEmpty(SearchStr))
                    {
                        lblWord.Text = SearchStr.Replace("[[]", "[");
                    }
                    lblNumResults.Text = NumResults.ToString();
                    if (NumResults == 0)
                    {
                        RenderNoResults();
                    }
                }
            }
            else
            {
                RenderNoResults();
            }
        }