Je souhaite que mes classes concrètes soient séparées de mes vues. Sans utiliser de vues fortement typées, je vais bien. J'utilise simplement une grande liste de paramètres dans les signatures de la méthode du contrôleur, puis j'utilise mes méthodes de fabrication de couche de service pour créer mes objets concrets. Cela me convient parfaitement, mais après un peu de lecture, j'ai réalisé qu'il était littéralement impossible pour une méthode de contrôleur d'accepter une interface comme paramètre de méthode - parce qu'elle n'a aucun moyen de l'instancier . Impossible de créer une vue fortement typée à l'aide d'une interface via l'EDI (ce qui est logique).ASP.NET MVC 2 - Comment utiliser une interface comme type pour une vue fortement typée
Donc, ma question. Est-il possible de dire au contrôleur comment instancier le paramètre d'interface en utilisant mes méthodes de fabrication de couche de service?
Je voudrais convertir:
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
[UrlRoute(Path = "Application/Edit/{id}")]
public ActionResult Edit(String id, String TypeCode, String TimeCode, String[] SelectedSchoolSystems,
String PositionChoice1, String PositionChoice2, String PositionChoice3, String Reason, String LocationPreference,
String AvailableDate, String RecipientsNotSelected, String RecipientsSelected) {
//New blank app
IApplication _application = ApplicationService.GetById(id);
à quelque chose comme
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
[UrlRoute(Path = "Application/Edit/{id}")]
public ActionResult Edit(String id, IApplication app) {
//Don't need to do this anymore
//IApplication _application = ApplicationService.GetById(id);
Merci pour l'excellente entrée tout le monde. Énorme aide. – Rake36
Cela fait plusieurs mois, mais après beaucoup plus de codage - je me suis rendu compte que même si le classeur de modèle personnalisé est probablement la bonne réponse, l'utilisation de modèles de vue fortement typés fonctionne le mieux pour moi. La clé étant que les View Models sont assez différents des objets de ma base de données. – Rake36