Ich habe festgestellt, dass Html.BeginForm()
automatisch das routeValueDictionary mit dem RawUrl auffüllt (dh. QueryStringParamters). Allerdings brauche ich eine HtmlAttribute angeben, damit ich die Überschreibung verwenden müssen ...Wie bekomme ich die QueryString-Werte in ein RouteValueDictionary mit Html.BeginForm()?
public static MvcForm BeginForm(this HtmlHelper htmlHelper, string actionName, string controllerName, FormMethod method, object htmlAttributes)
Wenn ich die Abfrage-Zeichenfolge-Werte tun, werden nicht automatisch in die Routevaluedictionary hinzugefügt. Wie kann ich das erreichen?
Hier ist mein bester Versuch, aber es scheint nicht zu funktionieren.
<% 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" }))
{%> ...
Meine Controller Aktion sieht wie folgt aus ...
[HttpPost]
public ActionResult Login(Login member, string returnUrl)
{ ...
Aber der Wert von „returnUrl“, der Teil der Abfrage-Zeichenfolge ist immer NULL, wenn ich den Standard parameterlos Html.BeginForm() verwenden, Meiner Ansicht nach.
Danke, Justin
Sie nie erwähnt 'returnUrl' in Ihrer Route Wert Wörterbuch oder du hast? – xandy
Die Variable routeValueDictionary soll mit allen Schlüssel/Wert-Paaren im Request.QueryString gefüllt werden. Ich kann es hacken, indem ich einfach new {returnUrl = Request.QueryString ["ReturnUrl"]} verwende, aber was ist, wenn mehr als ReturnUrl in der Querystring ist. – Justin
Wie sieht das von Ihrem Code generierte "