Html.BeginForm()
routeValueDictionaryにRawUrl(つまり、QueryStringParamters)が自動的に入力されることがわかりました。ただし、HtmlAttributeを指定する必要があるため、オーバーライドを使用する必要があります...
public static MvcForm BeginForm(this HtmlHelper htmlHelper, string actionName, string controllerName, FormMethod method, object htmlAttributes)
私が行うと、QueryString値はRouteValueDictionaryに自動的に追加されません。どうすればこれを達成できますか?
これが私の最善の試みですが、うまくいかないようです。
<% RouteValueDictionary routeValueDictionary = new RouteValueDictionary(ViewContext.RouteData.Values);
foreach (string key in Request.QueryString.Keys )
{
routeValueDictionary[key] = Request.QueryString[key].ToString();
}
using (Html.BeginForm("Login", "Membership", routeValueDictionary, FormMethod.Post, new { @class = "signin-form" }))
{%> ...
私のコントローラーアクションは次のようになります...
[HttpPost]
public ActionResult Login(Login member, string returnUrl)
{ ...
ただし、ビューでデフォルトのパラメータなしのHtml.BeginForm()を使用しない限り、QueryStringの一部である「returnUrl」の値は常にNULLです。
ありがとう、ジャスティン