ورود

View Full Version : سوال در رابطه با Url Routing در MVC



jaykob
پنج شنبه 25 اردیبهشت 1393, 18:04 عصر
سلام

من یک کنترل Sale دارم با یک اکشن Orders که به صورت زیر فراخوانی می شه




http://localhost/Sale/Orders


من می خواهم با استفاده از Url Routing نام اکشن یا مثلا کنترلرم رو تغییر بدم و با url زیر درخواست رو بدم و اکشن Orders از کنترلر Sale فراخوانی بشه




http://localhost/Sale/All-Order

سرچ کردم اما آموزش ها بیشتر به ساختار Url Routing بیشتر پرداخته بودند

ممنون می شم پاسخ بدید

cancerr
پنج شنبه 25 اردیبهشت 1393, 18:16 عصر
سلام از این روت استفاده کنید

routes.MapRoute("Sale ", "All-Order", new { controller = "Sale", action = "Orders " });

jaykob
پنج شنبه 25 اردیبهشت 1393, 18:50 عصر
سلام از این روت استفاده کنید

routes.MapRoute("Sale ", "All-Order", new { controller = "Sale", action = "Orders " });

سلام

ممنون دوست عزیز ، اما جواب نداد و هیچ تغییری نکرد ...

amir-yeketaz
پنج شنبه 25 اردیبهشت 1393, 19:15 عصر
از ویژگی ActionName استفاده کنید .

public class ProductsController {

[ActionName("create-product")]
public ActionResult CreateProduct() {
return View();
}

}

headshoter
پنج شنبه 25 اردیبهشت 1393, 19:19 عصر
بالای خطی که اکشن رو تعریف کردی بنویس : [ActionName("All-Order")]
فکر میکنم اسم ویو رو هم باید بعدش تغییر بدی .

jaykob
پنج شنبه 25 اردیبهشت 1393, 19:26 عصر
از ویژگی ActionName استفاده کنید .

public class ProductsController {

[ActionName("create-product")]
public ActionResult CreateProduct() {
return View();
}

}

ممنون دوست عزیز جواب داد اما این کار کل اسم اکشن رو تغییر می ده نمی شه کاری کرد فقط توی Routing یا همان Url این گزینه تغییر کند و اینجوری اسم view هم باید تغییر کنه و ...

و برای کنترل چطور بخواهیم اسم کنترل در url چیز دیگری نمایش داده شود ؟

ممنون

cancerr
پنج شنبه 25 اردیبهشت 1393, 20:21 عصر
همین رو که کپی پیست نکنید !
درسته
routes.MapRoute("NAME", "URL", new { controller = "Sale", action = "Orders " });

name که دلخواه هست
url شما هرچی می خوای بزن
اون که من گذاشتم اینجوری میشه
localhost/all-order

این روت هم باید قبل از دیفالت بزاری
routes.MapRoute("Sale ", "sale/All-Order", new { controller = "Sale", action = "Orders " });

jaykob
جمعه 26 اردیبهشت 1393, 13:08 عصر
همین رو که کپی پیست نکنید !
درسته
routes.MapRoute("NAME", "URL", new{ controller = "Sale", action = "Orders "});

name که دلخواه هست
url شما هرچی می خوای بزن
اون که من گذاشتم اینجوری میشه
localhost/all-order

این روت هم باید قبل از دیفالت بزاری
routes.MapRoute("Sale ", "sale/All-Order", new{ controller = "Sale", action = "Orders "});

من قبلی رو هم طبق همون All-Order فراخوانی کردم و نشد

الان من طبق گفته شما به این شکل route رو داخل global ام اضافه کردم



public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute("Sale ", "sale/All-Order", new { controller = "Sale", action = "Orders" });
}

و به صورت زیر می خواهم اکشنم نمایش داده شود اما با خطای not found بر می خورم :



http://localhost:10301/sale/All-Order

کجای کار اشتباه هست ؟ یا من کاری رو انجام نمی دم ؟

ممنون

cancerr
جمعه 26 اردیبهشت 1393, 19:45 عصر
کل کانفیگتون رو بزارید
این کانفیگ منه ببین برای سایت مپ دو حالت گذاشتم



routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


routes.MapRoute("sitemap.xml", "sitemap.xml", new { controller = "Home", action = "sitemap" });
routes.MapRoute("sitemap", "sitemap", new { controller = "Home", action = "sitemap" });
routes.MapRoute("Feed", "Feed", new { controller = "Home", action = "Feed" });



routes.MapRoute(
name: "DefaultEn",
url: "en/{action}/{id}",
defaults: new { controller = "Home", lang = "en", action = "Index", id = UrlParameter.Optional }


);


routes.MapRoute(
name: "File",
url: "File/{action}/{id}",
defaults: new { lang = "fa", controller = "File", id = UrlParameter.Optional }
);


routes.MapRoute(
name: "Account",
url: "Account/{action}/{id}",
defaults: new { lang = "fa", controller = "Account", id = UrlParameter.Optional }
);


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




routes.MapRoute(
name: "Hub",
url: "Hub/{action}/{id}",
defaults: new { lang = "fa", controller = "Hub", id = UrlParameter.Optional }
);


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

jaykob
شنبه 27 اردیبهشت 1393, 09:45 صبح
سلام

ممنون آقا ولی نمی دونم چرا نمی شه اینم کل فایل globax من ; کلاسی چیزی جایی نباید اضافه کنم ؟



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;


namespace UrlRouting
{




// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{


protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();


WebApiConfig.Register(GlobalConfiguration.Configur ation);
FilterConfig.RegisterGlobalFilters(GlobalFilters.F ilters);
RouteConfig.RegisterRoutes(RouteTable.Routes);




}


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




routes.MapRoute("MyOrder", "MyOrder", new { controller = "Sale", action = "Orders" });
}




}


}


ممنون

cancerr
شنبه 27 اردیبهشت 1393, 12:03 عصر
کنترلر دیفالت رو پاک کردی ؟
ببین
کلا هرچی روتینگت specific تر باشه باید قبل تر باشه . باید روت قبل و بعد هم ببینی چیکار کردی .
واسه منو ببین کلا home رو برداشتم اگه بزنه /post میره کنترلر home اکشن post رو صدا می زنه . کنترلر دیفالت رو اضافه کن . او روت مخصوصت هم بزار قبل . نه چیزی نمی خواد اضافه کنی بازم مشکل داشتی بزار تو گیت ادیت کنم بهت بدم

jaykob
شنبه 27 اردیبهشت 1393, 16:15 عصر
کنترلر دیفالت رو پاک کردی ؟
ببین
کلا هرچی روتینگت specific تر باشه باید قبل تر باشه . باید روت قبل و بعد هم ببینی چیکار کردی .
واسه منو ببین کلا home رو برداشتم اگه بزنه /post میره کنترلر home اکشن post رو صدا می زنه . کنترلر دیفالت رو اضافه کن . او روت مخصوصت هم بزار قبل . نه چیزی نمی خواد اضافه کنی بازم مشکل داشتی بزار تو گیت ادیت کنم بهت بدم

سلام

توی global من چیزی نبود خودم اینو اضافه کردم چیزی رو پاک نکردم . کنترلر هام هم 2 تا هستن یکی Home و یکی Sale من به این شکل اضافه کردم نشدم می شه لطف کنید و همین رو برام ویرایش کنید ؟

ممنون



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;


namespace UrlRouting
{




// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{


protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();


WebApiConfig.Register(GlobalConfiguration.Configur ation);
FilterConfig.RegisterGlobalFilters(GlobalFilters.F ilters);
RouteConfig.RegisterRoutes(RouteTable.Routes);




}


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




routes.MapRoute("MyOrder", "MyOrder", new { controller = "Sale", action = "Orders" });


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




}


}

cancerr
شنبه 27 اردیبهشت 1393, 16:24 عصر
اینو تست کنید


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
namespace UrlRouting
{




// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{


protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();


WebApiConfig.Register(GlobalConfiguration.Configur ation);
FilterConfig.RegisterGlobalFilters(GlobalFilters.F ilters);
RouteConfig.RegisterRoutes(RouteTable.Routes);




}


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




// routes.MapRoute("MyOrder",
// "MyOrder", // loackhost/MyOrder Controller sale action orders
// new { controller = "Sale", action = "Orders" });


routes.MapRoute(
name: "All-Order",
url: "All-Order/{id}", // loackhost/All-Order
defaults: new { controller = "Sale", action = "Orders", id = UrlParameter.Optional });
}


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


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




}


}

jaykob
شنبه 27 اردیبهشت 1393, 16:53 عصر
آقا ممنون ولی نشد ، من پروژه رو ضمیمه کردم شما یک نگاهی بهش بکنید و بگید مشکل از کجاست http://uploadboy.com/cx5430v4mqti.html خیلی لطف می کنید

cancerr
شنبه 27 اردیبهشت 1393, 18:34 عصر
یه جای خیلی ساده ای اشتباه داشتی برادر من
چرا دقت نمی کنی آخه

کل globalet رو پاک کن این بشه

!

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;


namespace UrlRouting
{




// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit <a href="http://go.microsoft.com/?LinkId=9394801" target="_blank">http://go.microsoft.com/?LinkId=9394801</a>
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();


WebApiConfig.Register(GlobalConfiguration.Configur ation);
FilterConfig.RegisterGlobalFilters(GlobalFilters.F ilters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
}



برو پوشه
App_start

فایل
RouteConfig رو باز کن اونجا روتینگته که تو گلوبال صدا زدی عزیزم
یعنی همون کد اول هم که گذاشتم درست بود

این فایل RouteConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;


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


routes.MapRoute(
name: "All-Order",
url: "All-Order", // loackhost/All-Order
defaults: new { controller = " Sale", action = "Orders", id = UrlParameter.Optional });


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



ok dad

119140

jaykob
یک شنبه 28 اردیبهشت 1393, 09:17 صبح
یه جای خیلی ساده ای اشتباه داشتی برادر من
چرا دقت نمی کنی آخه

کل globalet رو پاک کن این بشه

!

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;


namespace UrlRouting
{




// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit <a href="http://go.microsoft.com/?LinkId=9394801" target="_blank">http://go.microsoft.com/?LinkId=9394801</a>
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();


WebApiConfig.Register(GlobalConfiguration.Configur ation);
FilterConfig.RegisterGlobalFilters(GlobalFilters.F ilters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
}



برو پوشه
App_start

فایل
RouteConfig رو باز کن اونجا روتینگته که تو گلوبال صدا زدی عزیزم
یعنی همون کد اول هم که گذاشتم درست بود

این فایل RouteConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;


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


routes.MapRoute(
name: "All-Order",
url: "All-Order", // loackhost/All-Order
defaults: new { controller = " Sale", action = "Orders", id = UrlParameter.Optional });


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



ok dad

119140

سلام

خیلی ممنون . بی حواسی من روی حساب asp.net webforms بود که کار کرده بودم گفتم حتما مثل اونجا باید توی globax کار کنم

ممنونم لطف کردید ....

cancerr
یک شنبه 28 اردیبهشت 1393, 13:32 عصر
خواهش اشکالی نداره