2010-08-12 102 views
2

我有一个基于名为Visitor的模型的简单窗体。我想通过其中一个ID文本字段来搜索按钮,以便用户可以单击该按钮并使该页面填充访问者信息:名字,姓氏等。在Web窗体中,我将执行如下操作:ASP.NET MVC一个窗体,两个按钮

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

看看这里:http://stackoverflow.com/questions/2444245/handling -2-buttons-submit-actions-in-a-single-view-form-asp-net-mvc-2-rtm – 2010-08-12 19:05:39

+0

问题是,我需要返回到t他在同一页面并用搜索结果填充字段。我认为这是我感到困惑的地方。 – Mike 2010-08-12 19:11:28

+0

执行搜索并返回传递给您的结果的视图。 – 2010-08-12 19:24:34

回答

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)); 
    } 
} 
+0

这是一个单一的形式。搜索只是查找访客信息并填充同一表单中的字段的一种方式。 – Mike 2010-08-12 19:12:18

+0

没错,但您添加了一个新的按钮来进行提交,因为您无法从技术上在单个表单上提交多个操作,因此您需要为每个操作(例如,搜索和登录功能)提供一个表单。 – 2010-08-12 19:17:21

+0

您可以以单一形式提交多个操作。看到我的答案。 – 2010-08-12 19:19:01