/// <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(); } }
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(); } }