ページングの場合、クエリ文字列の要素を失うことなくクエリ文字列を更新できるこのコードがあります。
var tRVD = new RouteValueDictionary(ViewContext.RouteData.Values);
foreach (string key in Request.QueryString.Keys)
{
tRVD[key] = Request.QueryString[key];
}
tRVD["page"] = @i;
@Html.ActionLink(@i.ToString(CultureInfo.InvariantCulture), "Index", tRVD);
並べ替えでも同じことをする必要があります。私は次のコードを持っていますが、もちろんクエリ文字列はsortbyによって上書きされます。必要なのは、ページングの場合と同じです。これは、ケルストリングが存在しない場合はソートバイを追加し、存在する場合は更新するだけです。これはどのように可能ですか?
<form name="sortbyformtop">
<select onchange="location.href=this.options[this.selectedIndex].value" name="sortbyselecttop">
<option value=""></option>
<option value="sortby=accommodationtype">Accommodation type</option>
<option value="sortby=mostreviewed">Most reviewed</option>
<option value="sortby=lowestprice">Lowest price</option>
</select>
</form>
したがって、私が達成しようとしているのは、クエリ文字列を現在と同じ値にソートバイを加えた値に設定することです。