Как отобразить альтернативное дочернее представление в MVC? - PullRequest
1 голос
/ 22 декабря 2009

Я новичок в работе с MVC, поэтому, пожалуйста, не думайте, что я ничего не знаю.

Я подбираю проект, который уже много написан на MVC, и пытаюсь добавить в него некоторые вещи.

На одном экране есть строка

<% Html.RenderAction("List", "Image", new { id = Model.JobId, all = true });  %>

Я вижу List.ascx в каталоге Image. Я вижу метод List на контроллере представления.

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

Ответы [ 2 ]

2 голосов
/ 22 декабря 2009

В вашем методе действий

if (isList) return PartialView("List"); else return PartialView("AssignImage");

1 голос
/ 22 декабря 2009

Если вы не возражаете против повторного использования (или дублирования) некоторого кода, я бы, вероятно, просто предпринял новое действие, чтобы справиться с этим.

Не думаю, что я бы изменил действие, чтобы передать другой параметр (действие уже принимает 2: jobId и логическое значение). Возможно, вам придется где-то изменить существующий код, чтобы учесть третий параметр.

Предполагая, что действие просто дает вам список записей, я не вижу, как добавление нового действия с одной строкой LINQ (или как бы вы ни получали данные) обидело бы СУХОЙ ... особенно, если это делает код легче поддерживать, не смешивая слишком много функций в одном действии. Если это слишком оскорбительно, вы можете реорганизовать действия, чтобы вызвать какой-то распространенный метод.

...