2011-10-18 3 views
0

C'est une question assez intéressante, à mon avis. J'ai une vue fortement typée en utilisant le moteur de vue WebForm, je ne sais pas si changer à rasoir résoudrait mon problème..Net MVC 4 View Engine WebForm

PROBLÈME: J'ai une vue avec une liste des voitures, donc de type IList <Car>. Et j'ai un bouton "Créer une nouvelle voiture" qui popups, le popup est un formulaire qui est caché et vous appelez une commande jQuery UI $('formName').dialog() pour le faire apparaître, ce formulaire a les attributs de la nouvelle voiture possible, donc probablement une nouvelle vue avec un Car fortement typé. Après avoir rempli le formulaire, la base de données devrait être remplie avec la nouvelle voiture, et la liste des voitures devrait être rafraîchie en utilisant Ajax. Le principal problème est que je ne peux pas utiliser les assistants HTML pour IList <Car> et pour Car en même temps.

En résumé:Quel est le type fort pour cette vue? Est-il possible de définir deux vues et l'autre appel en utilisant une fenêtre pop-up? Le changer pour Razor résoudrait mon problème?

Meilleures salutations,

Tito Morais

+1

Je ne peux pas dire quel est votre problème. Mais il n'y a rien dans Razor que vous ne pouvez pas faire dans WebForms. Je préfère Razor, mais changer ne résoudra pas votre «problème». –

+0

Personne ne fournira une réponse solide à moins que vous postez votre exemple de code ici. J'ai en quelque sorte compris ce dont vous avez besoin, mais cela pourrait être faux, alors postez le code, pls. – tugberk

Répondre

1

Ne pas mélanger les vues pour la liste des voitures et la création d'une nouvelle voiture ensemble. Par exemple, vous pouvez créer une fenêtre contextuelle qui charge dynamiquement une vue partielle "_CreateCar" à l'aide de la boîte de dialogue jQuery ou d'un composant similaire. Ensuite, lorsque la vue partielle est terminée, rechargez l'affichage de la liste en utilisant un autre appel Ajax.

1

Peut-être pas tant une solution élégante est de créer un modèle de vue complexe comme:

class ListAndCreate 
{ 
public IList<Car> AllCars {get;set;} 
public Car NewCar {get;set;} 
} 

OMI, est correcte depuis un point de vue est responsable de la liste de toutes les voitures et créer un nouveau. Maintenant, je suppose que votre NewCar a des valeurs venant de votre contrôleur ou de quelque chose, où vous devez passer un modèle à votre vue.

L'autre approche, que @Jonas mentionne est également correcte et plus unifiée. Vous pouvez créer une vue partielle _CreateCar avec le type Car, le rendre avec Jquery/Ajax pour le charger dans une boîte de dialogue/popup et avoir la forme POST à ​​une méthode Create(Car c) dans votre contrôleur.