مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

مشکل در مسیر یابی

  • جمعه 29 اردیبهشت 1396
  • 16:31
تشکر میکنم

با سلام و خسته نباشید

من ی 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" }
            );
        }
    }

پاسخ های این پرسش

تعداد پاسخ ها : 8 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 29 اردیبهشت 1396
  • 17:45

روت را به شکل زیر تغییر دهید

url: "{lang}/Posts/{postId}/{postUrl}"

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

  • جمعه 29 اردیبهشت 1396
  • 18:50

ممنونم استاد

وقتی این رو اضافه کردم سایت دیگه بالا نیومد . کد هارو پاک کردم و کد های پیشفرض رو گذاشتم ولی بازم بالا نمیاد - متن ارور 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 29 اردیبهشت 1396
  • 18:54

با روت پیشرفرض تداخل داره

شروع روت خودتون رو باید کلمه ثابت بزارید مثلا  Posts اول باشه

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

  • جمعه 29 اردیبهشت 1396
  • 18:55

استاد کامل کد هارو پاک کردم روت پیشفرض خود mvc  هست الان

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 29 اردیبهشت 1396
  • 18:56

حتما اشتباهی کردید

کد این خطا 403 هست واگر پیدا نمیکرد 404 ارور میداد

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

  • جمعه 29 اردیبهشت 1396
  • 19:01

ممنونم استاد نام روت رو از name: "Default  رو به name:site  تغییر داده بودم ولی روت پیشفرض بود

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

  • جمعه 29 اردیبهشت 1396
  • 19:18

استاد مشکل حل نشد . اینم کد های 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" }
            );
      

        }
    }
}

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 29 اردیبهشت 1396
  • 19:39

namespace درست است ؟

پروژه را کلی Rebuild کردید ؟

کد تعریف روت درست است

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)