この問題の解決策は何ですか? :)
必要に応じて動作するカスタム Html.BeginForm ヘルパーを作成するには:
using System;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Routing;
public static class FormExtensions
{
public static IDisposable MyBeginForm(this HtmlHelper html, string action, string controller, FormMethod method)
{
var routeValues = new RouteValueDictionary();
var query = html.ViewContext.HttpContext.Request.QueryString;
foreach (string key in query)
{
routeValues[key] = query[key];
}
return html.BeginForm(action, controller, routeValues, FormMethod.Get);
}
}
次に、ビューでデフォルトのヘルパーの代わりにこのカスタム ヘルパーを使用します。
@using (Html.MyBeginForm(null, null, FormMethod.Get))
{
...
}
また、カスタム ヘルパーを作成したくない (推奨されません) 場合は、現在のクエリ文字列パラメーターをキャプチャする次のホラーを作成することで、ビューを傷つけることもできます。
@using (Html.BeginForm(null, null, new RouteValueDictionary(Request.QueryString.Keys.Cast<string>().ToDictionary(key => key, key => (object)Request.QueryString[key])), FormMethod.Get))
{
...
}