0

我正在使用 ASP.NET、MVC3、Razor。在我的网站中,我在所有页面(在顶部标题中)都有登录表单,用户可以随时登录。当带有另一个表单的另一个页面出现时,就会出现问题。我无法弄清楚如何实现它。我已经尝试了很多,但我认为我需要一个非常小的例子来解决我的问题。该示例可以像在同一页面上的注册表单和登录表单一样简单,它们分别工作、所有验证和其他内容。登录表单和注册表单可以是部分视图,也可以是任何人可以建议的可重复使用的内容。

这是_Register.cshtml(共享视图)的代码

@model MVCRnD.Models.RegisterModel

@using (Html.BeginForm("Register","Account")) {

}

放置上述共享视图的 about.cshtml 的代码

@Html.Partial("_Register")

帐户控制器代码

[HttpPost]

public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus;
            Membership.CreateUser(model.UserName, model.Password, model.Email, null,   null, true, null, out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", ErrorCodeToString(createStatus));
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

部分视图,即注册表单呈现良好。但是当我点击提交按钮时,它会发布整个表单,但会将我带到实际上是正确的寄存器 /Account/Register。但我想在同一页上,不去其他形式。你要我发送完整的代码吗?我可以把它上传到某个地方,然后把链接发给你。

4

1 回答 1

0

不确定您为什么会遇到问题,但是无论您使用哪种服务器端语言,将两个表单放在同一页面上都是一种非常常见的做法。

@using (Html.BeginForm("Logon", "Account")) {
   ...
}

@using (Html.BeginForm("Register", "Account")) {
   ...
}

翻译为:

<form action="/Account/Logon" method="post">        
   ...
</form>

<form action="/Account/Register" method="post">        
   ...
</form>
于 2012-06-05T17:51:30.793 回答