Mam wieloetapowy proces instalacji, w którym chciałbym przekazać argumenty ciągu zapytania dołączone do adresu URL, tylko jeśli są one odpowiednie.MVC3 Html.BeginForm - przekazywanie argumentów jako RouteValueDictionary kończy się niepowodzeniem
http://localhost:6618/Account/Profile?wizard=true&cats=dogs
@using(Html.BeginForm())
działał świetnie. Dało to: <form action="/Account/Profile?setup=true&cats=dogs" method="post">
tj. Przekazało do akcji POST dowolny z oryginalnych parametrów ciągu zapytania, a następnie w tej akcji kontrolera mogłem wybrać, które z nich były istotne, aby przejść do następnego kroku, lub konieczne do dodania, poprzez dodanie do parametrów RouteValues i a RedirectToResult.
Jednak do celów stylizacyjnych muszę przypisać klasę do mojego formularza.
że próbował:
@using(Html.BeginForm("Profile", "Account", args, FormMethod.Post, new { @class = "mainForm" }))
co daje:
<form action="/Account/Profile?Count=1&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D" class="mainForm" method="post">
(args
wytworzono przez filtr i jest RouteValueDictionary). Specyfikacja http://msdn.microsoft.com/en-us/library/dd505151.aspx wskazuje, że można przekazywać argumenty za pomocą System.Web.Routing.RouteValueDictionary.
Co chcę jest <form action="/Account/Profile?setup=true&cats=dogs" class="mainForm" method="post">
należy wspomnieć, wolałbym nie robić coś przekazując new {key = value}
Zamiast tego, ponieważ jest tam sporo logiki, aby ustalić, co będę przekazując do następnego kroku.
Wszelkie sugestie dotyczące tego, co należy tutaj zrobić?
Jestem zahamowany tym pozornie prostym zadaniem i na pewno brakuje mi czegoś strasznie oczywistego.
Może odpowiedź w tym drugim poście może trochę pomóc? http://stackoverflow.com/questions/1219223/asp-net-mvc-getting-html-beginform-to-remember-querystring-params-when-submi – summea