Domanda

Sono nuovo di MVC (e ASP.Net routing).Sto cercando di mappa *.aspx per un controller chiamato PageController.

routes.MapRoute(
   "Page",
   "{name}.aspx",
   new { controller = "Page", action = "Index", id = "" }
);

Non sarebbe il codice di sopra mappa *.aspx per PageController?Quando ho eseguito questo tipo e in qualsiasi .pagina aspx ho il seguente errore:

Il controllore per il percorso '/Pagina.aspx' non può essere trovato o non attuare il IController interfaccia.Nome del parametro:controllerType

C'è qualcosa che io non sto facendo qui?

È stato utile?

Soluzione

Ho appena risposto alla mia domanda.Ho avuto i percorsi all'indietro (di Default era sopra la pagina).

Sì, devi mettere tutti i percorsi personalizzati sopra la route di Default.

Quindi questo ci porta alla prossima domanda...come funziona il "Default" percorso partita (mi pensano di utilizzare le espressioni regolari qui) la "Pagina" percorso?

Il percorso di Default corrispondenze in base a ciò che noi chiamiamo la Convenzione sulla Configurazione.Scott Guthrie spiega bene nel suo primo post sul blog ASP.NET MVC.Si consiglia di leggere attraverso di essa e anche il suo post di altri.Tenete a mente che queste sono state pubblicate in base al primo CTP e il quadro è cambiato.Si possono anche trovare web cast su ASP.NET MVC sul asp.net sito di Scott Hanselman.

Altri suggerimenti

Ho appena risposto alla mia domanda.Ho avuto i percorsi all'indietro (di Default era al di sopra di pagina).Qui di seguito è l'ordine corretto.Quindi questo ci porta alla prossima domanda...come funziona il "Default" percorso match (presumo che l'uso delle espressioni regolari qui) la "Pagina" percorso?

routes.MapRoute(
            "Page",
            "{Name}.aspx",
            new { controller = "Page", action = "Display", id = "" }
        );

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

Su uno di Rob Conery del MVC Storefront screencast, incontra questo problema.È a circa 23 minuti, se siete interessati.

Non sono sicuro di come il vostro controller guarda, l'errore sembra essere rivolta al fatto che non riesce a trovare i controller.Hai ereditare off del Controller dopo la creazione del PageController classe?È il PageController trova nella directory Controllers?

Ecco il mio itinerario nel Mondiale.asax.cs

routes.MapRoute(
    "Page", 
    "{Page}.aspx", 
    new { controller = "Page", action = "Index", id = "" }
);

Qui è il mio controller, che si trova nella cartella Controllers:

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class PageController : Controller
    {
        public void Index()
        {
            Response.Write("Page.aspx content.");
        }
    }
}
public class AspxRouteConstraint : IRouteConstraint
{
    #region IRouteConstraint Members

    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return values["aspx"].ToString().EndsWith(".aspx");
    }

    #endregion
}

registrare il percorso per tutte aspx

  routes.MapRoute("all", 
                "{*aspx}",//catch all url 
                new { Controller = "Page", Action = "index" }, 
                new AspxRouteConstraint() //return true when the url is end with ".aspx"
               );

Ed è possibile verificare i percorsi da MvcRouteVisualizer

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top