2010-08-12 2 views
2

У меня простая форма, основанная на модели под названием «Посетитель». Я хотел бы иметь кнопку поиска по одному из текстовых полей id, чтобы пользователь мог нажать кнопку и заполнить страницу информацией о посетителе: имя, фамилия и т. Д. В Web Forms я бы сделал что-то вроде этого: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-one-view-form-asp-net-mvc-2-rtm –

+0

Проблема в том, что мне нужно вернуться к t на той же странице и заполнить поля результатами поиска. Я думаю, что там я смущаюсь. – Mike

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

Это единственная форма. Поиск - это всего лишь способ поиска информации о посетителях и заполнения полей в одной и той же форме. – Mike

+0

Правильно, но вы добавили новую кнопку, которая выполняет отправку, так как вы не можете отправить несколько различных действий в одной форме, вам нужно иметь форму для каждого действия (например, функцию поиска и входа в систему), которую вы хотите иметь. –

+0

Вы можете отправить несколько действий в одной форме. См. Мой ответ. –