2009-06-29 6 views
4

Je construis ce qui sera principalement une application ASP.NET MVC ciblée par navigateur mobile. Bien qu'il ciblera également le bureau dans une plus petite capacité. (Je suis relativement nouveau à la fois MVC et applications mobiles.)Où les types de navigateur doivent-ils être séparés dans une application ASP.NET Mobile MVC?

Je me demande quelle est la meilleure pratique pour séparer les utilisateurs mobiles par rapport aux utilisateurs de bureau dans une application MVC.

Le contrôleur doit-il être responsable de la vérification du type de navigateur? Ou, ce type de fonctionnalité doit-il être réservé à la vue?

Si coché dans la vue, est-ce que & devrait faire une vérification? Connaissez-vous de bons exemples en ligne?

Mise à jour: Je viens de découvrir une surcharge de la méthode View qui accepte un argument de chaîne spécifiant le Masterpage à utiliser.

Par exemple:

public ActionResult Index() 
{  
    if (isMobile()) 
     return View("Index", "Mobile", myObject); 
    else 
     return View("Index", myObject); 
} 

Pour moi, cela suggère qu'au moins quelques personnes de l'équipe Microsoft attendent distinctions majeures (comme bureau mobile ou fixe) à effectuer dans le contrôleur. (Il y a de fortes chances que je sois très confus à ce sujet.)

Répondre

1

Je pense que le contrôleur doit connaître la plate-forme, car vous pouvez obtenir beaucoup de vues dans les langues distint, Certains afficher pour les navigateurs (mobiles) une autre vue dans Desktop App, une autre vue peut être un service Web, avoir des besoins différents.

Si vous avez quelques vues, vous pouvez appeler des vues avec des paramètres pour marquer le type de vue:

Index comme (mobile) et Index (bureau):

Index(string typeOfApp){ 
//prepare data, do querys, etc 
if (typeOfApp=='Mobile'){ 
redirectoAction('IndexMobile',ds); 
//or 
return view('IndexMobile',ds) 
} 
return View('IndexDesktop',ds); 
} 

IndexMobile(DataSet ds){} 

IndexDesktop(DataSet ds){} 

Vous pouvez obtenir une méthode générale pour votre action() et une autre action pour chaque type, Index -> Index4Mobile & Index4Browser & Index4Desktop

et dans toutes ces méthodes préparer ou faire quelque chose fo spécial r chaque plateforme, ou une action unique avec plusieurs vues (1 pour la plateforme).

0

Tout code traitant du rendu de votre code devrait exister sur la page elle-même via CSS et javascript. Vos contrôleurs ne devraient rien savoir sur la façon dont vos données seront affichées à l'écran. Les vues ne devraient même pas vraiment en savoir plus à ce sujet - elles n'exposent que les données que votre CSS rendra.

Le HTML que votre vue crache décrit vos données et leur organisation. Seul le CSS doit savoir comment le rendre approprié pour tout périphérique qui le rend.

Cette link, pleine de javascript devrait aider à déterminer quel navigateur mobile est en cours d'exécution.

+0

Il y aura probablement des fonctionnalités étendues lorsque le navigateur est un ordinateur de bureau (options supplémentaires, etc.). Ne semble pas être un travail pour javascript. – Feckmore

+0

Je pense que détecter un navigateur mobile avec js n'est pas une bonne idée, car la plupart des navigateurs mobiles ne supportent pas js. Essayez WURFL. Donc, ui n'est pas seulement CSS et js, vous devriez aussi adapter la taille de l'image. Je pense qu'un utilisateur de bureau et mobile a des besoins différents. – fravelgue

+0

De bons points fravelgue - peut-être pour servir les clients de bureau et mobiles, nous avons besoin de deux applications différentes, chacune accédant au même niveau intermédiaire. –

Questions connexes