C#에서 쿼리 문자열을 업데이트하는 방법은 무엇입니까?
URL 어딘가에 &sortBy=6이 있습니다. 버튼 클릭으로 &sortBy=4 또는 &sortBy=2로 업데이트하려면 어떻게 해야 합니까?올바른 리디렉션 URL을 만들려면 사용자 지정 문자열 함수를 작성해야 합니까?
쿼리 문자열 변수만 추가하면 됩니다.
string completeUrl = HttpContext.Current.Request.Url.AbsoluteUri + "&" + ...
Response.Redirect(completeUrl);
하지만 기존 쿼리 문자열 변수를 수정하고 싶습니다.
기존 QueryString 값을 수정하려면 다음 방법을 사용합니다.
var nameValues = HttpUtility.ParseQueryString(Request.QueryString.ToString());
nameValues.Set("sortBy", "4");
string url = Request.Url.AbsolutePath;
Response.Redirect(url + "?" + nameValues); // ToString() is called implicitly
정렬 기준 쿼리 문자열을 검색한 다음 전체 Url에서 다음과 같이 문자열 바꾸기를 수행합니다.
string sUrl = *retrieve the required complete url*
string sCurrentValue = Request.QueryString["sortby"];
sUrl = sUrl.Replace("&sortby=" + sCurrentValue, "&sortby=" + newvalue);
어떻게 진행되는지 알려주세요 :)
행운을 빌어요
private void UpdateQueryString(string queryString, string value)
{
PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
isreadonly.SetValue(this.Request.QueryString, false, null);
this.Request.QueryString.Set(queryString, value);
isreadonly.SetValue(this.Request.QueryString, true, null);
}
이것을 정말로 원한다면, 이미 사람들이 대답한 것처럼 쿼리 문자열이 변경된 새로운 동일한 페이지로 리디렉션해야 합니다.이렇게 하면 페이지가 다시 로드되고, 좋은 방법이 아닌 쿼리 문자열을 변경하기 위해 페이지가 다시 로드됩니다.
그런데 왜 이런게 필요한거죠?
sortBy 값을 6에서 4로 변경하여 응용 프로그램의 모든 곳에서 사용하려면 쿼리 문자열 값을 변수 또는 보기 상태로 저장하고 모든 곳에서 해당 보기 상태를 사용하는 것이 좋습니다.
예를 들어.
Page_Load에서 쓸 수 있습니다.
if (!IsPostBack)
{
ViewState["SortBy"] = Request.QueryString["sortBy"];
}
다른 모든 곳에서(포스트백 후에도) ViewState["정렬 기준"]
Ahmad 솔루션을 기반으로 일반적으로 사용할 수 있는 다음 방법을 만들었습니다.
private string ModifyQueryStringValue(string p_Name, string p_NewValue)
{
var nameValues = HttpUtility.ParseQueryString(Request.QueryString.ToString());
nameValues.Set(p_Name, p_NewValue);
string url = Request.Url.AbsolutePath;
string updatedQueryString = "?" + nameValues.ToString();
return url + updatedQueryString;
}
그런 다음 다음 다음과 같이 사용합니다.
Response.Redirect(ModifyQueryStringValue("SortBy","4"));
새 URL로 리디렉션해야 합니다. 리디렉션하기 전에 서버에서 작업을 수행해야 하는 경우 응답을 사용해야 합니다.코드에서 리디렉션(...)합니다.서버에서 작업할 필요가 없으면 HyperLink를 사용하여 미리 렌더링하기만 하면 됩니다.
당신이 실제 URL을 구성하는 것에 대해 물어본다면, 나는 그 일을 할 수 있는 내장된 기능을 알지 못합니다.Paths 및 QueryString 인수에 상수를 사용하여 코드 전체에 반복되지 않도록 할 수 있습니다.
UriBuilder는 URL을 구축하는 데 도움이 되지만 쿼리 문자열은 도움이 되지 않습니다.
쿼리 문자열을 빌드하고 windows.open을 사용하여 페이지를 리디렉션하기 위해 일부 Javascript를 사용하여 클라이언트 측에서 수행할 수 있습니다.
그렇지 않으면 응답을 사용할 수 있습니다.리디렉션 또는 서버.서버 측에서 전송합니다.
SolrNet에는 몇 가지 매우 유용한 URL 확장 방법이 있습니다.http://code.google.com/p/solrnet/source/browse/trunk/SampleSolrApp/Helpers/UrlHelperExtensions.cs?r=512
/// <summary>
/// Sets/changes an url's query string parameter.
/// </summary>
/// <param name="helper"></param>
/// <param name="url">URL to process</param>
/// <param name="key">Query string parameter key to set/change</param>
/// <param name="value">Query string parameter value</param>
/// <returns>Resulting URL</returns>
public static string SetParameter(this UrlHelper helper, string url, string key, string value) {
return helper.SetParameters(url, new Dictionary<string, object> {
{key, value}
});
}
당신이 바꿀 수 있는 유일한 방법은QueryString
는 새 QueryString QueryString과 .
Response.Redirect("YourPage.aspx?&sortBy=4")
http://msdn.microsoft.com/en-us/library/a8wa7sdt(v=vs.100).aspx
당신의 서버 사이드 코드에서 다음과 같은 방식으로 쿼리 문자열을 교체할 수 있을 것 같습니다.
NameValueCollection filtered = new NameValueCollection(request.QueryString);
filtered.Remove("SortBy");
filtered.Add("SortBy","4");
쿼리 문자열이 서버로 전달됩니다.쿼리 문자열을 원하는 문자열로 처리할 수 있지만 페이지가 다시 읽을 준비가 될 때까지(즉, 서버로 다시 전송) 아무 작업도 수행하지 않습니다.따라서 쿼리 문자열의 값을 처리하는 방법을 묻는 경우 요청에 액세스하기만 하면 됩니다.QueryString["쿼리"].서버에서 쿼리 문자열의 이 '변경'을 고려하려면 새 값으로 페이지를 효과적으로 다시 로드하면 됩니다. url url url url url을 구성합니다.page.aspx?id=30
예를 들어 리디렉션 방법으로 전달합니다.
언급URL : https://stackoverflow.com/questions/9771718/how-to-update-querystring-in-c
'programing' 카테고리의 다른 글
[NSDate date]에서 현재 날짜를 가져오지만 시간을 오전 10시로 설정합니다. (0) | 2023.08.20 |
---|---|
husky > 사전 커밋 후크 실패(바이패스하려면 --no-commit hook 추가) (0) | 2023.08.20 |
iframe이 jQuery에서 로드를 완료했을 때 이벤트를 실행하려면 어떻게 해야 합니까? (0) | 2023.08.20 |
Laravel: 다른 필드보다 커야 하는 정수 필드의 유효성을 검사합니다. (0) | 2023.08.20 |
GZIP과 DEFLATE 압축의 장점은 무엇입니까? (0) | 2023.08.20 |