2010-11-01 2 views
0

У меня есть главная страница, которая зависит от конкретной модели, поступающей с моих страниц. Таким образом, окончание код в основном каждый ViewResult заканчивается что-то вроде этогоповторное использование избыточный вид код модели mvc

public ActionResult Details(long store_id) 
{ 
    var store = getStore(); 

    var model = new ClientModel<StoreModel>(store) 
     { 
      UserNotifications = new UserNotificationModel(this.CurrentUser) 
     }; 

    return View(model); 
} 

Каждый из моих контроллеров производный от BaseController, поэтому я искал поставить этот избыточный код, но я не совсем уверен, лучший подход.

Структура моего родового ClientModel это ...

public class ClientModel<T> : ClientModel {} 

public class ClientModel {} 

Разъяснение StoreModel является общим и много других действий, использовать другую модель представления. Я просто хотел показать, как он выглядит, когда он был взломан.

+0

Используйте наследование с осторожностью здесь. Вы можете нарисовать себя в угол. :) – bzlm

+0

Наследование необходимо для динамической страницы MasterPage/Content. Мои мастер-страницы зависят от ClientModel, и мои страницы просмотра могут принимать необязательные параметры PageModel, . Решение работает хорошо. –

ответ

1
protected ViewResult ClientModelView<T>(T model) 
{ 
    var clientModel = new ClientModel<T>(model) 
     { 
      UserNotifications = new UserNotificationModel(CurrentUser) 
     }; 

    return this.View(clientModel); 
} 
+0

, это решение моей проблемы, почему downvote –

0

Проверьте мои аналогичные question.

В принципе, вы создать базовый контроллер:

public class BaseController : Controller 
{ 
    public Model GetModel() {} 
} 

Тогда все ваши контроллеры наследуют от основания:

public class NewController : BaseController 
{ 

    public ActionResult Details(long store_id) 
    { 

     var model = GetModel(); 

     return View(model); 
    } 

} 
+0

это фокусируется на модели, тогда как я пытаюсь абстрагировать представление и допускаю любую модель –

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