我有一个基于名为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.)将其返回到登录表单以填充字段。我需要采取哪些步骤来实现这一目标?
感谢。
答案 0 :(得分:2)
此问题在SO
上多次重复但是要回答你的问题,你可以在一个页面上有多个表单,并有不同的操作处理提交。这就是上面的链接概述。
特定于您的情况:
查看强>
<% 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));
}
}