2017-07-01 4 views
2

Ich kann diese Arbeit nicht bekommen, auch nach Dutzenden von anderen ähnlichen Fragen. Hier ist mein Controller (mit Entity Framework erstellt)Route MVC ASP.Net wird einfach nicht funktionieren

namespace mypage.Controllers 
{ 
    [RoutePrefix("Booking")] 
    public class BookingsController : BaseController 
    { 
     private mypageContext db = new mypageContext(); 

     // GET: Bookings 
     public ActionResult Index() 
     { 
      var model = db.Bookings.ToList(); 
      //model.Find() 
      return View(model); 
     } 
// etc. 

meine global.asax

public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
     Database.SetInitializer<mypageContext>(new DropCreateDatabaseIfModelChanges<mypageContext>()); 
    } 
} 

Und routeconfig.cs

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapMvcAttributeRoutes(); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 

Ich bekomme immer eine 404 beim Öffnen http://localhost:xxxxx/Booking dies jedoch funktioniert http://localhost:xxxxx/Bookings

ist e irgendeinen anderen Ort zu überprüfen?

PS: die BaseController ist gerade leer

public abstract class BaseController : Controller 
{ 

} 

bearbeiten

Wenn ich aber statt RoutePrefix ein Präfix regelmäßig hinzufügen, es ist nicht entweder gar

[Route("Booking/New")] 
public ActionResult Edit(int? id) 
funktioniert

Antwort

2

Sie müssen Route Attribut für t angeben er Aktion, wenn Sie das Attribut RoutePrefix für den Controller angeben.

[RoutePrefix("TestPrefix")] 
public class TestController : Controller 
{ 
    [Route("TestAction")] 
    public ActionResult TestAction() 
    { 
     //......... 
     return View(); 
    } 
} 
+2

Ok, Folgefrage, weil das tatsächlich funktioniert hat. Muss ich jetzt wirklich die '[Route (" ThisAction ")]' zu jeder Aktion hinzufügen? – rst

+2

Sie können den Controller mit '[RoutePrefix (" Buchung "), Route (" {Aktion} ")] markieren und brauchen ihn nicht bei jeder Aktion. Viele Beispiele hier [Attribut-Routing in ASP.NET MVC 5] (https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/) – Jasen

+0

Wenn ich für jede Aktion dieses hier hinzufügen [Route ("test")] ', bekomme ich einen' HTTP Error 400.0 - Bad Request' .... warum das? – rst

Verwandte Themen