ASP.NET MVC One Form,Two Buttons

时间:2010-08-12 19:02:13

标签: asp.net-mvc asp.net-mvc-2 button controller action

我有一个基于名为Visitor的模型的简单表单。我希望其中一个id文本字段有一个搜索按钮,以便用户可以单击该按钮并使页面填充访问者信息:名字,姓氏等。在Web窗体中,我会这样做:

page_load(){
    person = businessManager.FindPersonById(Convert.ToInt32(txtId.Text));
    txtFirstName.Text = person.FirstName;
    txtLastName.Text = person.LastName;
     ...
}

在搜索按钮之前,我的名为SignIn的视图形式工作得很好;将数据发布到控制器并做了它的事情:

    [HttpPost]
    public ActionResult SignIn(Visitor visitor) {
        if (ModelState.IsValid) {
            visitorRepoistory.Add(visitor);
            visitorRepoistory.Save();
            return RedirectToAction("/");
        } else {
            return View(new VisitorFormViewModel(visitor));
        }
    }

但是现在我的视图表格上有一个搜索按钮,我完全迷失了。我不知道如何将搜索按钮连接到控制器,因此我可以:1。)查找数据和2.)将其返回到登录表单以填充字段。我需要采取哪些步骤来实现这一目标?

感谢。

1 个答案:

答案 0 :(得分:2)

此问题在SO

上多次重复

Multiple forms in ASP.NET MVC

但是要回答你的问题,你可以在一个页面上有多个表单,并有不同的操作处理提交。这就是上面的链接概述。

特定于您的情况:

查看

<% Html.BeginForm("Search", "<ControllerName>"); %>
    Your search controls here
<% Html.EndForm(); %>

<% Html.BeginForm("SignIn", "<ControllerName>"); %>
    Your signin controls here
<% Html.EndForm(); %>

控制器

[HttpPost]
public ActionResult Search(FormCollection collection)
{
   Do your search and return a view
}

[HttpPost]
public ActionResult SignIn(Visitor visitor) 
{
    if (ModelState.IsValid) {
        visitorRepoistory.Add(visitor);
        visitorRepoistory.Save();
        return RedirectToAction("/");
    } else {
        return View(new VisitorFormViewModel(visitor));
    }
}