Comment puis-je utiliser les fichiers cshtml avec Durandal?
J'ai eu le DurandalJS StarterKit modèle de VS2012... Tout fonctionne très bien...
Mais dans quelques vues que j'ai besoin de faire quelque chose comme ça:
@if (Roles.IsUserInRole("Administrators"))
{
<p>Test</p>
}
Cependant avec durandal tous mes points de vue sont".html fichiers... Est-ce possible d'utiliser '.cshtml " fichiers d'accéder à certaines informations comme ça?
Ou est-il un autre moyen de le faire avec durandal?
Junior
source d'informationauteur Junior
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez tout à fait utiliser cshtml fichiers avec Durandal et profiter de Rasoir sur le serveur. Je suppose que cela signifie également que vous souhaitez MVC, de sorte que vous pouvez le faire aussi et l'utilisation de son acheminement.
Si vous don'; t veulent le routage puis vous pouvez définir les pages web.Activé dans le web.config, comme les autres commentaires le suggèrent.
Je fais comme ceci:
Créer un contrôleur générique pour Durandal vues:
Enregistrer un itinéraire:
Copie Vues/web.config /App/views/web.config (sorte de Rasoir, des vues à cet emplacement).
Cela me permet d'utiliser la normale Durandal conventions (même l'extension html pour la vue), et de mettre durandal vues comme cshtml les fichiers à leur emplacement normal sans ajouter plus de code serveur.
Si vous avez également des fichiers html statiques point de vue, vous pouvez également placer le cshtml vues dans un sous-dossier ou de l'utilisation normale MVC /dossier Vues.
Je ne recommandent pas l'utilisation de ASP.NET MVC avec Durandal.
Ce que vous êtes probablement à la recherche à faire est d'utiliser le moteur de vue Razor (pour obtenir les avantages d'un compilateur, un typage fort, etc.) ce qui existe indépendamment de ASP.NET MVC. Juste WebAPI pour les données I/O est plus que suffisant pour de manière très efficace de créer un Durandal.js application.
Si vous êtes intéressé à utiliser de Rasoir/CSHTML avec Durandal et knock-out il y a une option open source là-bas appelé FluentKnockoutHelpers qui peuvent être exactement ce que vous cherchez. Il offre beaucoup de le "gentil" pièces de ASP.NET MVC vous permettant d'utiliser les compétences impressionnantes de Durandal et knock-out avec presque pas de faiblesses.
Source
Démonstration en direct à l'aide de Durandal.js
En un mot, il offre un tas de fonctions qui fait de faire Durandal/knock-out de développement tout aussi facile que de ASP.NET MVC. (Il vous suffit de fournir un type C# que l'option JavaScript de votre modèle est fondé pour la plupart des fonctions.) Vous devez écrire du JavaScript et de l'onu-compilé de balisage pour les cas compliqués qui est inévitable et ne diffère pas de MVC! (Sauf dans MVC votre code serait également susceptible de mettre fin à serait également un grand jQuery mess qui est pourquoi vous êtes à l'aide de Durandal/knock-out en premier lieu!)
Caractéristiques:
Exemple sans FluentKnockoutHelpers
Fournir FluentKnockoutHelpers avec un .Type de NET et vous pouvez le faire dans le style avec Intellisense et d'un compilateur de Rasoir /CSHTML
Prendre un coup d'oeil à la Source ou Démonstration En Direct pour un aperçu exhaustif de FluentKnockoutHelper de fonctionnalités dans un non-trivial Durandal.js application.
Je ne recommande pas que vous utilisez .cshtml fichiers comme point de vue. Vous êtes mieux de placer l' .cshtml fichiers derrière un contrôleur.
Par exemple, prendre la HotTowel exemple, d'éditer /App/main.js et de remplacer la définition de la fonction avec les éléments suivants:
Noter que nous avons ajouté une référence à la Durandal viewEngine. Ensuite, nous avons besoin de remplacer
avec
Le premier argument de viewLocation.useConvention jeux /Apps/viewmodel/répertoire que l'emplacement pour les modèles de vue js fichiers, mais pour le point de vue de l'emplacement, utilise l'URL http://example.com/dynamic/avec une extension '/'. De sorte que si Durandal est à la recherche de la vue nommée "shell", il fait référence à http://example.com/dynamic/shell/ (c'est parce que la vue de répertoire est mappé par rapport à la viewmodel répertoire, d'où /App/viewmodel/../../dynamique qui va vous donner simplement /dynamique).
Par convention, cette URL précédente (http://example.com/dynamic/shell/) sera associé à l'automate DynamicController, et l'action "Shell".
Après cela, il vous suffit d'ajouter un contrôleur - DynamicController.cs, comme ceci:
Créer .cshtml fichiers pour chacune des actions ci-dessus. De cette façon, vous arrivez à utiliser les contrôleurs, côté serveur Cio et al pour générer des vues dynamiques pour votre SPA.
DurandaljS est un client de cadre qui se forme principalement d'une base solide pour une seule page apps (SPA).
Je suppose que vous êtes en utilisant asp.net l'API web comme votre serveur de la technologie. Dans ce cas, vous pouvez déterminer le rôle de l'utilisateur à l'intérieur de votre API contrôleur et sur cette base de données de retour au client. Sur le client, vous pouvez utiliser knock-out "si" de liaison afin d'afficher /masquer certaines zones de votre page.
Ce que vous peut-être pouvez faire est de placer ce code dans l'Index.cshtml.
Lien suivant montre comment personnaliser moduleid à viewid cartographie
http://durandaljs.com/documentation/View-Location/
par convention durandal essaie de trouver l'url d'affichage dans les étapes suivantes
1) Checke si l'objet a
getView()
fonction qui renvoie un dom ou une chaîne d'url ( pour la vue)2) Si l'objet n'a pas getView fonction vérifie si l'objet a
viewUrl
propriété3) Si les deux étapes ci-dessus ne parvient pas à produire des url ou d'un DOM vue drundal tombe à défaut de convention
les cartes moduleid
xyz.js
pour afficherxyz.html
l'aide d'afficher l'url ( chemin d'accès du dossier Vues ) défini dans l'main.jsdonc pour moduleid xyz.js chemin de la vue sera
views/xyz.html
vous pouvez remplacer cette valeur par défaut de la cartographie comportement en écrasant
convertModuleIdToViewId
fonction.Donc il ya beaucoup de façons dont vous pouvez personnaliser l'affichage de vos url pour le modèle spécifique (.js objet)
J'ai fait une extension de Durandal, qui vous donne la possibilité de placer un applicationContent div dans votre cshtml fichier avec l'applicationHost div. Dans applicationContent vous pouvez maintenant utiliser ASP .Net MVC syntaxe avec knock-out liaisons.
Seule chose que j'ai faite a été de mettre certains de code supplémentaire dans le viewLocator.js fichier qui cherche une applicationContent div:
Original de votre cshtml fichier peut maintenant faire quelque chose comme ceci:
Vous pouvez trouver ma fourche de la durandal projet ici et un petit article sur le blog de quoi et comment je l'ai fait ici.
Je ne suis pas très familier avec DurandalJS mais parce que c'est côté client système, il devrait faire aucune différence quelle technologie est utilisée sur le serveur pour générer le code HTML. Donc, si vous utilisez le Rasoir CSHTML fichiers pour générer le code HTML sur le serveur, DurandalJS devrait fonctionner très bien avec elle.
Si vous obtenez une erreur alors s'il vous plaît partager cette erreur, mais je ne peux pas penser à une raison pourquoi ça ne marcherait pas.