2009-12-22 7 views
1

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

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

На одном View есть линия

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

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

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

ответ

1

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

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

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

2

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

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

+0

так что метод действия определяет вид? мне кажется, что я должен просто попросить данные как-то с контроллера и позволить представлению определить макет ... возможно, я думаю об этом назад/традиционном способе asp.net. –

+1

Да, действие определяет вид. Вид, в соответствии с шаблоном MVC, должен быть очень глупым и не делать таких определений. –