如何使用单个视图实现多个表单?

时间:2013-04-02 12:28:35

标签: asp.net-mvc-4 razor-2

我有一个场景,我需要使用单个视图实现两个表单...将有一个主页,每个表单用于LogIn和SignUp(类似于Facebook主页)。我为我的主页(Index.cshtml)创建了一个视图,其中包含我的两个表单的razor代码。

[@using (Html.BeginForm("LogIn", "Home", FormMethod.Post))]

[@using (Html.BeginForm("SignUp", "Home", FormMethod.Post))]

但是,在单击LogIn表单的“登录”按钮或单击“注册”按钮以获取SignUp表单时,运行时会抛出一个错误,基本上说我仍然需要为LogIn和SignUp操作创建视图,即使我已经在index.cshtml中实现了HTML表单

[注意:我没有使用ASP.NET成员资格提供程序。这个问题通常有两种形式,可以是任何两种形式。]

所以我的问题是:我真的需要再创建两个名为LogIn.cshtml和SignUp.cshtml的视图吗?这不会导致代码重复吗?我对MVC 4很陌生,我希望你能理解我在这里要做的事情,所以我想知道的是,是否还有其他方法可以实现这一点? (jQuery,AJAX或其他)

public class HomeController : Controller
{
    [HttpGet]
    public ActionResult Index()
    {
        return View();
    }

    [HttpGet]
    public ActionResult LogIn()
    {       
        return View();
    }

    [HttpPost]
    public ActionResult LogIn(Account acc)
    {                  
        // some code
        return View();
    } 

    [HttpGet]
    public ActionResult SignUp()
    {       
        return View();
    }

    [HttpPost]
    public ActionResult SignUp(Account acc)
    {                  
        // some code
        return View();
    }       

}

1 个答案:

答案 0 :(得分:0)

您可以指定要返回的视图:

[HttpGet]
public ActionResult SignUp()
{       
    return View("LogIn");
}