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" }))
{
    ....
}

第一个参数是操作方法名称,第二个是控制器,第三个参数是RouteValueDictionary,所以当您指定 ReturnUrl 时,它成为路由数据参数的一部分,并且在您的操作方法中您可以像访问它一样

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 回答