Asp.net mvc 当使用HTML.BeginForm时,ReturnUrl如何存储在MVC4 Razor页面中?

Asp.net mvc 当使用HTML.BeginForm时,ReturnUrl如何存储在MVC4 Razor页面中?,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我正在使用以下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/Ac

我正在使用以下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的一部分存储的吗

让我们看看您的代码

@using (Html.BeginForm("action", "controller", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form", @id = "registerForm", data_href = "/User/Account/Register" }))
{
    ....
}
第一个参数是action方法名,第二个参数是controller,第三个参数是,当您指定ReturnUrl时,它将成为route数据参数的一部分,在您的action方法中,您可以像这样访问它

public ActionResult action(FormColection col, string ReturnUrl){
}

由于某些原因,我没有在表单标记中获得所需的returl参数

通过写这个

想要这个,它应该用html写

会产生这个


您确定ViewBag.ReturnUrl不为空吗?
@using(Html.BeginForm("Login", "Account",
                new { returnUrl = ViewBag.ReturnUrl, }, FormMethod.Post, null))
    <form action="/Account/Login?returnUrl=%2FDashboard%2FIndex" method="post">
<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">