MVC Domaines de Vue pas trouvé
J'ai un projet qui est en utilisant MVC domaines. La région dispose de la totalité de leur projet, tandis que les principaux "points de Vue/Controllers/Modèles" dossiers à l'extérieur des Zones sont vides sauf un message de contrôleur que j'ai mis que les routes par défaut les demandes entrantes à la Maison Contrôleur dans ma région.
Ce contrôleur a une méthode comme suit:-
public ActionResult Index(string id)
{
return RedirectToAction("Index", "Home", new {area = "xyz"});
}
J'ai aussi une route par défaut, le programme d'installation pour utiliser ce contrôleur comme suit:-
routes.MapRoute(
"Default", //Default route
"{controller}/{action}/{id}",
new { controller = "Dispatch", action = "Index", id = UrlParameter.Optional }
);
Toutes les demandes par défaut de mon site sont correctement acheminés vers la zone concernée. La Zone "RegisterArea" la méthode a une seule route:-
context.MapRoute(
"xyz_default",
"xyz/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
Ma région a de multiples contrôleurs avec beaucoup de points de vue. À l'appel d'un point de vue spécifique dans ces méthodes de contrôleur comme "return View("blablabla");
rend la vue correcte. Cependant à chaque fois que j'ai essayer et renvoyer un affichage avec un modèle de l'objet passé en tant que paramètre-je obtenir les
d'erreur suivantes:-
Server Error in '/DeveloperPortal' Application.
The view 'blah' or its master was not found. The following locations were searched:
~/Views/Profile/blah.aspx
~/Views/Profile/blah.ascx
~/Views/Shared/blah.aspx
~/Views/Shared/blah.ascx
Il ressemble à chaque fois qu'un objet du modèle est transmise en tant que paramètre. à l' "Afficher()" méthode [par exemple, le retour à la Vue("bla",obj) ] il recherche le point de vue
dans la racine du projet plutôt que dans la zone d'affichage spécifique au dossier.
Ce qui me manque ici ?
Merci d'avance.
OriginalL'auteur user314827 | 2010-04-12
Vous devez vous connecter pour publier un commentaire.
Résolu ! Un couple de mes "RedirectToAction" appels n'ont pas été en spécifiant le nom de la zone explicitement dans le routeobject collection paramètre de cette méthode. Bizarre cependant, que ce qui est requis, même si les contrôleurs de Redirection sont tous dans la même zone. Aussi, le HtmlActionLinks fonctionne parfaitement quand je n'ai pas de spécifier la nouvelle {area="bla"} dans son routeobject collection, alors je me demande pourquoi le contrôleur de l'action des appels à RedirectToAction() a besoin que même si l'appelant et l'appelé contrôleur actions sont toutes dans la même zone.
J'ai eu un problème similaire. Dans mon cas, mon lien n'a pas le nom de la zone dans le chemin, et même si le bon contrôleur a été appelé, le point de vue n'a pas pu être trouvé. Cette situation me laisse avec la question de savoir comment le contrôleur m'a appelé.
OriginalL'auteur
Si vous utilisez à la place de
utilisation
dans votre
alors vous n'avez pas besoin de spécifier explicitement votre région dans tout lien...
je vais avoir le même problème. comment avez-vous résolu ce problème?
OriginalL'auteur
Si c'est un problème de routage, vous pouvez résoudre le problème en enregistrant votre zone de routes première. Cela provoque le moteur de routage pour essayer de correspondance les voies, avant correspondant de la racine de la route:
Si j'ai la force d'une erreur en renommant l'un de mes points de vue des dossiers dans mes domaines d'application, j'obtiens une erreur différente de la vôtre:
..qui est le modèle de sous-répertoires, il serait de rechercher si elle pensait que c'était dans une zone.
Voir mon montage....
Salut Robert, je re-vérifie mon contrôleur des espaces de noms. Ils sont tous alignés avec ce qu'ils devraient être, qui est ProjectName.Les zones.AreaName.Les contrôleurs.
L'erreur que vous obtenez est exactement ce que je suis confronté. La seule différence étant que j'ai fait les points de vue présents dans la zone d'affichage spécifique au dossier
Je pourrais faire un redirecttoroute au lieu d'un redirecttoaction.
OriginalL'auteur
Vérifier le code généré à MonaireAreaRegistration.cs et assurez-vous que le paramètre du contrôleur est réglé par défaut de votre contrôleur, sinon le contrôleur sera appelé bot pour une raison quelconque ASP.NET MVC ne pas rechercher la vue sur la zone de dossier
OriginalL'auteur
Ajouter le RouteArea l'attribut de la classe du Contrôleur afin MVC sait utiliser le "XYZ" pour les points de vue (et puis vous pouvez définir la AreaPrefix à la chaîne vide si les routes ne doivent pas commencer par "XYZ").
OriginalL'auteur
J'ai juste eu le même problème et l'a résolu en définissant les ascx "Construire l'Action "propriété" Intégrée des Ressources'.
OriginalL'auteur
Essayer ce code. Faire des changements dans le Domaine de l'Enregistrement du Fichier...
OriginalL'auteur