Из того, что я понимаю из вашего вопроса, вы хотите сделать следующее:
- Повторно использовать представление, чтобы вам не нужно было создавать его для каждого запроса.
- Используйте одно и то же имя метода в контроллере, чтобы у вас не было разных URL для каждого запроса.
Вы можете добавить дополнительный параметр в свой метод, чтобы вы могли выполнить другой запрос в зависимости отзначение дополнительного параметра:
public class QueryController
{
private enum QueryType
{
TypeA = 0,
TypeB = 1,
TypeC = 2
}
[HttpGet]
public void ShowResults(QueryType type, string criteria)
{
/*
* Code here to make the query using the field you want,
* depending on the "type" parameter e.g.
*
* switch (type)
* {
* case TypeA:
* model = db.Items.Where(x => x.FieldA == criteria);
* break;
* case TypeB:
* model = db.Items.Where(x => x.FieldB == criteria);
* break;
* }
*/
return View(model);
}
}
Другое дело, не беспокойтесь о маршрутах, маршрут по умолчанию {controller} / {method} / {id} не требует от вас указанияURL-адреса таким строгим образом.Это действительный URL-адрес для предыдущего примера:
http://www.example.com/App/Query/ShowResults?type=1&criteria=foo
Привязка MVC по умолчанию будет использовать имена параметров в URL-адресе для привязки их значений к параметрам вашего метода.
Надеюсь, я не правильно понял ваш вопрос.
Удачи!