MVC - Ne peut pas résoudre la vue (les contrôleurs et les vues dans des projets séparés)
J'ai une Solution avec 4 projets:
AS.Core.Common
(références: Données, Web)AS.Core.Controllers
(références: Commune, de Données, Web)AS.Core.Data
AS.Core.Web
(références: les Données)
Dans mes contrôleurs, n'importe où que je reviens vue:
retour à la Vue("~/Views/Home/Index.cshtml");
Il est mis en évidence en rouge et je reçois un "Cannot resolve view '~/Views/Home/Index.cshtml'"
.
Tous les quatre projets de construire avec succès mais quand j'appuie sur la touche F5 je reçois le texte suivant:
Erreur de serveur dans l'Application'/'.
La ressource ne peut pas être trouvé.
Description: HTTP 404. La ressource que vous recherchez (ou l'un de ses
dépendances) peut avoir été supprimée, que son nom ait changé ou est
temporairement indisponible. Veuillez consulter l'URL suivante et de faire
assurez-vous qu'il est correctement orthographié.URL demandée: /
Informations De Version: Microsoft .NET Framework Version:4.0.30319;
ASP.NET Version:4.0.30319.17929
Comment puis-je obtenir mon contrôleurs de voir mon point de vue ils résolvent correctement? Je suppose que c'est pourquoi je reçois la réponse 404.
Mon Global.asax.cs
ressemble à:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//Register the default hubs route: ~/signalr
RouteTable.Routes.MapHubs();
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
Mon RouteConfig.cs
(j'ai ajouté des espaces de noms, mais il semble avoir pas aidé)
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
namespaces: new[] { "AS.Core.Controllers" },
defaults: new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
}
C'est mon HomeController.cs
public class HomeController : Controller
{
public ActionResult Index()
{
//return View("~/Views/Home/Index.cshtml");
return View();
}
}
J'ai ajouté mon routage à mon post original.
Désolé de ne pas assez clair 🙂 ce qui est dans les RouteConfig.RegisterRoutes(RouteTable.Itinéraires) de la méthode.
Je suppose que vous n'avez pas de contrôleur HomeController.cs contenant une classe nommée contrôleur HomeController avec une méthode nommée Index() ??
Juste vu (dans d'autres commentaires) que vos contrôleurs est dans un autre projet, non? Vous devriez ajouter les espaces de noms: new string[]{"YourControllerProjsNameSpace"} dans votre MapRoute() .
OriginalL'auteur Mithrilhall | 2013-06-05
Vous devez vous connecter pour publier un commentaire.
Dans asp.net mvc vous pourriez revenir valide Vue dans le contrôleur de la vue du dossier. Par exemple, si vous avez un contrôleur de Produit, vous pourriez avoir un dossier dans le chemin d'accès
~/Views/Product/Index.cshtml
. Dans votreIndex
action, vous juste de retour d'une Vue à l'aide de laView()
méthode de laController
de la classe de base que tous les contrôleurs de asp.net mvc devrait hérite. Pour l'échantillon:Asp.Net trouverez une Vue sur le dossier avec le même nom de votre Action,
Index
dans ce cas.Vous aussi pourrait revenir un autre point de Vue à l'aide de la
View
méthode, car vous avez la Vue sur le dossier, par exemple:Considérant ce cas, vous devriez avoir une Vue nommée
About
dans leProduct
dossier. Pour l'échantillon:~/Views/Product/About.cshtml
.Si vous modifiez vos contrôleurs à un autre projet (bibliothèque de classe), vous devez définir sur la asp.net mvc initialisation qu'est-ce que l'espace de noms par défaut de vos contrôleurs, d'essayer quelque chose de ce genre sur le
Global.asax
fichier etApplication_Start
méthode:Prendre un coup d'oeil à cet article: http://dotnetslackers.com/articles/aspnet/storing-asp-net-mvc-controllers-views-in-separate-assemblies.aspx
Donc, juste
return View();
il fonctionne.Il se plaint toujours qu'il ne peut pas résoudre la vue "Index".
comment concernant le routage? avez-vous changer quelque chose?
Je n'ai pas et c'est peut-être mon problème? A l'origine, j'avais mon contrôleurs de mon projet Web, mais j'ai supprimé le répertoire et créé un nouveau projet pour mon Contrôleurs. Je vais mettre à jour mon premier post avec mes itinéraires.
OriginalL'auteur Felipe Oriani