با سلام و خسته نباشید
من ی Controller دارم به اسم Posts که ی Action با نام Show داره به شکل زیر
public class PostsController : Controller { AppDbContext db = new AppDbContext(); // GET: /Posts/ [Route("{lang}/{postId}/{postUrl}")] public ActionResult Show(string lang,int postId, string postUrl) { var _post = db.Posts.Single(post => post.Language.Cultur.Equals(lang.ToLower()) && post.Id == postId && post.ContentUrl.Equals(postUrl)); if (_post == null) { return Redirect("/"); } return View(_post); } }
حالا میخوام توی url مثل مسیر زیر این Action رو صدا بزنم
http://localhost:11802/fa/Posts/1/Tour+ATAKOY+MARINA
ولی جواب نمید اینم کد های مربوط به Routing
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes(); routes.MapRoute( name: "PostShow", url: "{lang}/{postId}/{postUrl}", defaults: new {lang="en", controller = "Posts", action = "Show" }, constraints: new { postId = "\\d+" }, namespaces: new[] { "ParsCms.Controllers" } ); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "ParsCms.Controllers" } ); } }
روت را به شکل زیر تغییر دهید
url: "{lang}/Posts/{postId}/{postUrl}"
ممنونم استاد
وقتی این رو اضافه کردم سایت دیگه بالا نیومد . کد هارو پاک کردم و کد های پیشفرض رو گذاشتم ولی بازم بالا نمیاد - متن ارور
با روت پیشرفرض تداخل داره
شروع روت خودتون رو باید کلمه ثابت بزارید مثلا Posts اول باشه
استاد کامل کد هارو پاک کردم روت پیشفرض خود mvc هست الان
حتما اشتباهی کردید
کد این خطا 403 هست واگر پیدا نمیکرد 404 ارور میداد
ممنونم استاد نام روت رو از name: "Default رو به name:site تغییر داده بودم ولی روت پیشفرض بود
استاد مشکل حل نشد . اینم کد های RoutConfig
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace ParsCms { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", postId = UrlParameter.Optional }, namespaces: new[] { "ParsCms.Controllers" } ); } } }
namespace درست است ؟
پروژه را کلی Rebuild کردید ؟
کد تعریف روت درست است
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)