2011-04-17 16 views
7

MVC 3 projem için bir alan ekledim. Çok basit bir senaryo ile çalışmayı yönlendiremiyorum. Her zaman bölgeye çözmek istiyor gibi görünüyor. İşte benim yapılandırmam. Açılışta: web.config içindeMVC Alanları - Alan Dışı Bölgeye Gidiyor

AreaRegistration.RegisterAllAreas(); 
IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Browse", action = "Index", id = UrlParameter.Optional } 

Ve

public class AdminAreaRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get { return "Admin"; } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Users", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 

:

<authentication mode="Forms"> 
    <forms loginUrl="~/Login" defaultUrl="~/Browse" timeout="60" cookieless="UseDeviceProfile" /> 
</authentication> 

bunu çözmeye çalışmak için RouteDebugger kullanıyorum. Ben Girişi sayfasına gitmek zaman ayıklayıcı gösterir:

  • AppRelativeCurrentExecutionFilePath: ~ Giriş
  • Yönetici/{controller}/{eylem}/{id} Güncel İsteği
  • {denetleyicisi} Eşleşmiyor/{eylem}/{id} Maçlar Güncel İsteği
  • Rota eşleşti
  • : {denetleyicisi}/{eylem}/{id}

Şimdiye kadar gitmek od.

  • Oluşturulan URL::/Yönetici/Giriş ReturnUrl =% 2F rotayı "Yönetici/{controller}/{eylem}/{id}" kullanarak

Sonraki I Ama sonra bu gösteriyor . Benim Girişi/Endeksi yöntemi isabet olmadığı, giriş yapın ve ayıklayıcı gösterir:

  • AppRelativeCurrentExecutionFilePath: ~ Giriş
  • Yönetici/{controller}/{eylem}/{id} Güncel İsteği Eşleşmiyor
  • {denetleyicisi}/{eylem}/{id} Maçlar Güncel Talebi Rota eşleşti
  • : {denetleyicisi}/{eylem}/{id}
  • Oluşturulan URL:/Yönetici/Giriş ReturnUrl =% 2FAdmin% 2FLogin buna daha sonra oluşturulan URL'de o söylüyor, Yönetici rotayı uymadığını söylüyor

bir yandan rotayı "Yönetici/{controller}/{eylem}/{id}" kullanarak bu rotayı kullanarak. Şoktayım.

context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Users", action = "Index", id = UrlParameter.Optional } 
     ); 

kullanım:

cevap

3

deneyin yerine Örneğin ... yönlendirme tanımına önceden tanımlanmış değere birlikte alan parametre eklemek için

context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { area = "Admin", controller = "Users", action = "Index", id = UrlParameter.Optional } 
     ); 

yardımcı olur bana bildirin .. Saygılar

+0

Tam olarak söylediğin gibi yaptım. Öncelikle alan kaydı yapmadan önce alan kaydını yapmayı denedim. İyi değil. Alan kontrolörüne olmayan bağlantılar her zaman önlerinde "Yönetici /" ile giderilir. Bu yüzden kayıt sırasını tersine çevirdim.Sonra "~/Admin" e gittiğimde "{controller}/{action}/{id}" rotası üzerinde bir eşleşme gösteren hata ayıklayıcısına "~/Home/NotFound" yazdım. "~/Admin/Users" a gittiğimde, {catchall} güzergahında hata ayıklayıcısını gösteren eşleşmeyi "~/Admin/Home/Home/Home/NotFound" olarak görüyorum. –

+0

"Bölgesel olmayan denetleyiciye olan bağlantılar her zaman önlerinde" Yönetici/"ile giderilir." Bu tamamen doğru değil. Html.ActionLink doğru şekilde çözülür. Ancak Html.BeginForm ve Html.BuildUrlFromExpression , T alanı bir alanda OLMADI olsa bile Yönetici alanına gider. –

+0

Bu yöntemlerin alanları anlamadığı Microsoft.Web.Mvc 2.0 sürümünü kullanıyordum. 3.0'da sabitlendi. –

İlgili konular