UserControlレンダリング:書へのリンクは現在のページに表示すべき事は何か?
-
09-06-2019 - |
質問
私の実施にカスタムの制御および制御が必要で書きのバスへのリンクを現在のページがあり、それぞれ別のクエリパラメータとします。じっくり楽しんで、既存のクエリ文字列をそのままに、追加又は変更の値は、別のクエリの項目例"ページ):
"Default.aspx?page=1"
"Default.aspx?page=2"
"Default.aspx?someother=true&page=2"
など。
ある単純ヘルパーの方法で使用できますを描画する方法...uhmm...のように:
Page.ClientScript.SomeURLBuilderMethodHere(this,"page","1");
Page.ClientScript.SomeURLBuilderMethodHere(this,"page","2");
保育に生成する正しいURL、維持し、既存のクエリー文字列項目を重複させますpage=1&page=2&page=3?
転がり、自分のような観です。
解決
私にはわからないの内蔵方法、この方法を採用していますが、querystringは、設定パラメータ
/// <summary>
/// Set a parameter value in a query string. If the parameter is not found in the passed in query string,
/// it is added to the end of the query string
/// </summary>
/// <param name="queryString">The query string that is to be manipulated</param>
/// <param name="paramName">The name of the parameter</param>
/// <param name="paramValue">The value that the parameter is to be set to</param>
/// <returns>The query string with the parameter set to the new value.</returns>
public static string SetParameter(string queryString, string paramName, object paramValue)
{
//create the regex
//match paramname=*
//string regex = String.Format(@"{0}=[^&]*", paramName);
string regex = @"([&?]{0,1})" + String.Format(@"({0}=[^&]*)", paramName);
RegexOptions options = RegexOptions.RightToLeft;
// Querystring has parameters...
if (Regex.IsMatch(queryString, regex, options))
{
queryString = Regex.Replace(queryString, regex, String.Format("$1{0}={1}", paramName, paramValue));
}
else
{
// If no querystring just return the Parameter Key/Value
if (queryString == String.Empty)
{
return String.Format("{0}={1}", paramName, paramValue);
}
else
{
// Append the new parameter key/value to the end of querystring
queryString = String.Format("{0}&{1}={2}", queryString, paramName, paramValue);
}
}
return queryString;
}
もちろんのQueryString NameValueCollection
物件のURIオブジェクトを見出しの価値観やりやすいのですが、思いつきを解析querystring.
他のヒント
Ohとしてこの方法も可能にするだけで全体のURL文字列へのquerystringす。
public static string SetParameterInUrl(string url, string paramName, object paramValue)
{
int queryStringIndex = url.IndexOf("?");
string path;
string queryString;
if (queryStringIndex >= 0 && !url.EndsWith("?"))
{
path = url.Substring(0, queryStringIndex);
queryString = url.Substring(queryStringIndex + 1);
}
else
{
path = url;
queryString = string.Empty;
}
return path + "?" + SetParameter(queryString, paramName, paramValue);
}
所属していません StackOverflow