2

次の Razor コードを使用しています。

@using (Html.BeginForm("action", "controller", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form", @id = "registerForm", data_href = "/User/Account/Register" }))
{
    ....
}

これにより、次が生成されます。

<form action="/User/Account/Register" class="form" data-href="/User/Account/Register" id="registerForm" method="post" novalidate="novalidate"> 

生成されたコードに ReturnUrl への参照が見当たりません。これがHTMLの一部として保存されていることを誰かが説明できますか?

4

2 に答える 2

1

あなたのコードを見てみましょう

@using (Html.BeginForm("action", "controller", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form", @id = "registerForm", data_href = "/User/Account/Register" }))
{
    ....
}

最初のパラメータはアクションメソッド名、2番目はコントローラ、3番目のパラメータはRouteValueDictionaryReturnUrlを指定すると、ルートデータパラメータの一部になり、アクションメソッドで次のようにアクセスできます。

public ActionResult action(FormColection col, string ReturnUrl){
}
于 2013-01-02T04:12:03.407 に答える
0

何らかの理由で、フォームタグで目的の returl パラメータを取得できませんでした

こう書くことで

@using(Html.BeginForm("Login", "Account",
                new { returnUrl = ViewBag.ReturnUrl, }, FormMethod.Post, null))

これが欲しかったので、これをhtmlに書く必要があります

    <form action="/Account/Login?returnUrl=%2FDashboard%2FIndex" method="post">

しかし、これをブラウザのhtmlで取得する

<form action="/Account/Login/Dashboard/Index" method="post">

解決:

@using(Html.BeginForm("Login", "Account",
                new { backUrl = ViewBag.ReturnUrl, }, FormMethod.Post, null))

これを生成します

<form action="/Account/Login?backUrl=%2FDashboard%2FIndex" method="post">
于 2016-10-26T12:28:34.347 に答える