Контроллер / поток действий с «трехэтапными операциями»? - PullRequest
2 голосов
/ 07 февраля 2012

Я неоднократно сталкивался с проблемой при создании контроллеров ASP.NET MVC 3, для которой я не нашел хорошего решения / дизайна.Обычно я хочу создать страницу поиска, поэтому я создаю свой контроллер:

public class MyEntityController: Controller {
    public ActionResult Search() {
        return View();
    }
}

Это позволяет мне отобразить представление, где пользователь вводит параметры поиска.При отправке поиска я обычно создал бы действие для получения параметров поиска и выполнения фактического поиска:

[HttpPost]
public ActionResult Search(SearchEditModel model) {
    IList<IMyEntity> results = ...; // Do the actual search.
    SearchResultsViewModel resModel = ...; // Convert it into a view model.

    // NOW WHAT?
}

Вопрос в том, что мне теперь делать?Мне нужно отправить результаты поиска в представление, чтобы отобразить их.Но я не могу просто позвонить return View(resModel);, так как представление «Поиск» уже используется, чтобы позволить пользователю вводить параметры поиска.Это не очень необычный сценарий, поэтому я предполагаю, что есть «правильный способ» сделать это.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Дэвид,

На самом деле я не вижу проблемы в подходе к проблеме так же, как сейчас.Тем не менее, я бы использовал модель представления, которая включала в себя как ваш поисковый IList, так и расширенные «параметры» для поиска (то есть SearchEditModel).таким образом, вы можете вернуть результаты поиска в нижней части представления, при этом параметры поиска все еще будут видны в верхней части.это дало бы дополнительное преимущество, позволяя вам дополнительно уточнить ваш поиск при необходимости.Вам, конечно, придется изменить подписи действий httpget и httppost, чтобы учесть это.

Ваш пробег может меняться, конечно ... ... 1005 *

0 голосов
/ 07 февраля 2012

Подготовка просмотра для отображения результатов поиска и использования:

return View("YourViewName",resModel);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...