Я предполагаю, что ваш NameSearch
функция оценивает результат запроса и возвращает эти результаты, основанные на:
- ли запрос действителен? Если нет, вернитесь к индексу.
- Есть 0 или более 1 человека в результате, если да, то отправьте на результаты поиска
- Если в результате есть ровно 1 человек, отправьте детали.
Таким образом, более менее ваш контроллер будет выглядеть так:
public class PersonController
{
public ActionResult NameSearch(string name)
{
// Manage query?
if (string.IsNullOrEmpty(name))
return RedirectToAction("Index");
var result = GetResult(name);
var person = result.SingleOrDefault();
if (person == null)
return RedirectToAction("SearchResults", new { name });
return RedirectToAction("Details", new { id = person.Id });
}
public ActionResult SearchResults(string name)
{
var model = // Create model...
return View(model);
}
public ActionResult Details(int id)
{
var model= // Create model...
return View(model);
}
}
Таким образом, вы, вероятно, необходимо определить маршруты, такие, что:
routes.MapRoute(
"SearchResults",
"Person/SearchResults/{name}",
new { controller = "Person", action = "SearchResults" });
routes.MapRoute(
"Details",
"Person/Details/{id}",
new { controller = "Person", action = "Details" });
В результате действия Index
будут обрабатываться по маршруту {controller}/{action}/{id}
.
Это толкает вас в правильном направлении?
Спасибо, Мэтью! Это именно то направление, которое я искал! – zSynopsis 2010-11-22 19:36:22