2010-11-22 3 views
0

У меня есть контроллер, называемый Person, и у него есть метод post под названием NameSearch.Переписывание URL-адреса для метода действий контроллеров

Этот метод возвращает RedirectToAction («Index») или View («SearchResults») или View («Подробности»). URL-адрес, который я получил для всех 3 возможных вариантов: http://mysite.com/Person/NameSearch. Как это изменить, чтобы переписать URL-адреса на http://mysite.com/Person/Index для RedirectToAction («Index»), http://mysite.com/Person/SearchResults для просмотра («SearchResults») и http://mysite.com/Person/Details для просмотра («Детали»).

Заранее спасибо

ответ

1

Я предполагаю, что ваш NameSearch функция оценивает результат запроса и возвращает эти результаты, основанные на:

  1. ли запрос действителен? Если нет, вернитесь к индексу.
  2. Есть 0 или более 1 человека в результате, если да, то отправьте на результаты поиска
  3. Если в результате есть ровно 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}.

Это толкает вас в правильном направлении?

+0

Спасибо, Мэтью! Это именно то направление, которое я искал! – zSynopsis 2010-11-22 19:36:22

Смежные вопросы