2010-08-12 106 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