我發現Html.BeginForm()
自動使用RawUrl(即QueryStringParamters)填充routeValueDictionary。不過,我需要,所以我需要使用override當我這樣做的查詢字符串值不被自動添加到RouteValueDictionary指定一個HtmlAttribute ...如何使用Html.BeginForm()將QueryString值轉換爲RouteValueDictionary?
public static MvcForm BeginForm(this HtmlHelper htmlHelper, string actionName, string controllerName, FormMethod method, object htmlAttributes)
。我怎樣才能做到這一點?
這是我最好的嘗試,但它似乎並沒有工作。
<% 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)
{ ...
但「RETURNURL」的值,它是查詢字符串的一部分,始終是NULL,除非我用的是默認的無參數Html.BeginForm()在我看來。
感謝, 賈斯汀
你從來沒有在你的路線值的字典提到`returnUrl`,或你有? – xandy 2011-01-13 00:44:09
routeValueDictionary變量假設用Request.QueryString中的所有鍵/值對填充。我可以通過使用新的{returnUrl = Request.QueryString [「ReturnUrl」]}來破解它,但是如果查詢字符串中存在多於ReturnUrl的內容。 – Justin 2011-01-13 01:08:12