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:
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. –
"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. –
Bu yöntemlerin alanları anlamadığı Microsoft.Web.Mvc 2.0 sürümünü kullanıyordum. 3.0'da sabitlendi. –