View Full Version : سوال: مشکل با Route
sonicuser
شنبه 03 بهمن 1394, 02:01 صبح
سلام دوستان من تو پروژم تو area دو قسمت admin-site دارم حالا میخوام تو یجوری Route تنظیم کنم که این url http://localhost:52592/Product/11 بره به این http://localhost:52592/site/ProductDetail/List/1
تو RouteConfig اینجوری مقدار دادم
routes.MapRoute(
name: "Product",
url: "Product/{id}",
defaults: new { controller = "ProductDetail", action = "List", id = UrlParameter.Optional }
اما نمیره کسی میتونه راهنماییم کنه؟؟؟
bomb23
شنبه 03 بهمن 1394, 09:01 صبح
سلام منظورتو از داشتن Area متوجه نشدم، خب جایی داخل کدهات نمیبینم ولی برای تغییر روت ها باید از route attributes بالای نام کنترلرها و اکشن ها استفاده کنی.
http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
sonicuser
شنبه 03 بهمن 1394, 09:08 صبح
سلام منظورتو از داشتن Area متوجه نشدم، خب جایی داخل کدهات نمیبینم ولی برای تغییر روت ها باید از route attributes بالای نام کنترلرها و اکشن ها استفاده کنی.
http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
ممنون
area یعنی اینکه من تو سایتم تمام قسمتهای کاربری را با ادمین جدا کردم یعنی هرکدوم به صورت جدا گانه واسه خودشون model -view -controller دارن
bomb23
شنبه 03 بهمن 1394, 10:12 صبح
ممنون
area یعنی اینکه من تو سایتم تمام قسمتهای کاربری را با ادمین جدا کردم یعنی هرکدوم به صورت جدا گانه واسه خودشون model -view -controller دارن
:لبخند: اینو میدونم. منظورم این بود بیان داشتن Area توی سوالتون مثل زمانی بود که یه متغییر توی C# تعریف میکنی و ازش استفاده نمیکنی!
arashnaderi
شنبه 03 بهمن 1394, 10:21 صبح
سلام
همین الان برای ادرس دهی ها سوییچ کن به T4MVC
خیلی قشنگه و جالبه و تمیزه
خب شما این route ی که نوشتی رو کاملتر بنویس، دستور actionlink یا url.action ای هم که نوشتی رو بزار
بعدا اینجوری چرا خب کار میکنی؟ بزار همون آدرس دهی پیش فرضش باشه ولی در حالت کلی باید namespace رو به تمام فایل های کانفیگ در areaها اضافه کنی
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 = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "YourProject.Areas.Admin.Controllers" }
);
}
}
sonicuser
یک شنبه 04 بهمن 1394, 23:35 عصر
سلام
همین الان برای ادرس دهی ها سوییچ کن به T4MVC
خیلی قشنگه و جالبه و تمیزه
خب شما این route ی که نوشتی رو کاملتر بنویس، دستور actionlink یا url.action ای هم که نوشتی رو بزار
بعدا اینجوری چرا خب کار میکنی؟ بزار همون آدرس دهی پیش فرضش باشه ولی در حالت کلی باید namespace رو به تمام فایل های کانفیگ در areaها اضافه کنی
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 = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "YourProject.Areas.Admin.Controllers" }
);
}
}
ممنونم که وقت گذاشتی
public class SiteAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Site";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Site_default",
"Site/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "Novin.Areas.Site.Controllers" }
);
}
}
sonicuser
یک شنبه 04 بهمن 1394, 23:38 عصر
سلام
همین الان برای ادرس دهی ها سوییچ کن به T4MVC
خیلی قشنگه و جالبه و تمیزه
خب شما این route ی که نوشتی رو کاملتر بنویس، دستور actionlink یا url.action ای هم که نوشتی رو بزار
بعدا اینجوری چرا خب کار میکنی؟ بزار همون آدرس دهی پیش فرضش باشه ولی در حالت کلی باید namespace رو به تمام فایل های کانفیگ در areaها اضافه کنی
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 = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "YourProject.Areas.Admin.Controllers" }
);
}
}
ممنونم که وقت گذاشتی
public class SiteAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Site";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Site_default",
"Site/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "Novin.Areas.Site.Controllers" }
);
}
}
arashnaderi
سه شنبه 06 بهمن 1394, 09:41 صبح
شما نباید از تگ a استفاده کنی، حتما باید از actionlink یا url.action استفاده کنی
توی اون دوتا دستوری که گفتم خصوصیتی به نام area قبول میکنن.مثلا:
@Html.ActionLink(linkText: "پروفایل", actionName: "Index", controllerName: "Home", routeValues: new { Area = "Profile" }, htmlAttributes: null)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.