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

时间:2013-01-02 02:43:32

标签: 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/Account/Register" class="form" data-href="/User/Account/Register" id="registerForm" method="post" novalidate="novalidate"> 

我在生成的代码中看不到任何对ReturnUrl的引用。有人可以解释这是存储为HTML的一部分吗?

2 个答案:

答案 0 :(得分: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){
}

答案 1 :(得分:0)

由于某些原因,我没有在表格标签中获得所需的返回参数

  

写这个

@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">