fekre-bekr,learning,source,سورس,سورس رایگان,آموزش,اخبار,فناوری اطلاعات,mvc,.net,ساری,آموزشگاه,asp.net,c#.net,programing,c++,vb,آموزش برنامه نویسی,دانلود

اشتراک در سایت


مطالب تصادفی
اخبار و مقالات در فکر بکر آموزش نحوه ایجاد Extention method در C#

در این بخش با ارائه مثال عملی تبدیل تاریخ میلادی به شمسی به آموزش Extention method می پردازیم. ...


اخبار و مقالات در فکر بکر حل مساله n وزیر با استفاده از الگوریتم ژنتیک و بصورت گرافیکی

الگوریتم‌های ژنتیک (با نماد اختصاری GA) تکنیک جستجویی در علم رایانه برای یافتن راه‌حل تقریبی برای بهینه‌سازی و مسائل جستجو است. ...


اخبار و مقالات در فکر بکر آموزش ایجاد برنامه نصب (setup) قسمت اول

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


اخبار و مقالات در فکر بکر آموزش تحت شبکه کردن برنامه های مبتنی بر c# در sql server

در این آموزش به چگونگی استفاده از یک برنامه ویندوزی بصورت تحت شبکه توسط چندین سیستم خواهیم پرداخت. معمولا هر برنامه کاربردی دارا ...


اخبار و مقالات در فکر بکر آموزش کار با کوکی ها (Cookie) در Asp.net core

برا ی ذخیره اطلاعات روشهای مختلفی وجود دارد - در گذشته ، برنامه نویسان برای ذخیره ی اطلاعات معمولا از سرور استفاده میگردند. اما ...


اخبار و مقالات در فکر بکر آشنایی با Asp.net mvc6 بصورت پروژه عملی #2

با سلام - در این قسمت به ادامه مبحث قبلی و آشنایی بیشتر با net core1 و mvc6 می پردازیم . لطفا به ادامه مطلب توجه نمایید. ...


اخبار و مقالات در فکر بکر سورس بازی Minesweeper به زبان سی شارپ

در این ساعت از فکر بکر بازی زیبای Minesweeper که از بازیهای پرطرفدار در سیستم عامل ویندوز هست را میتوانید از فکر بکر دانلود نمایی ...


اخبار و مقالات در فکر بکر پیاده سازی سیستم احراز هویت کاربران در Asp.net MVC (بخش اول)

در این مقاله به آموزش و پیاده سازی سفارشی سیستم احراز هویت کاربران خواهیم پرداخت. معمولا در حالت عادی هر سایت حداقل شامل مدیر سی ...


اخبار و مقالات در فکر بکر مروری بر Identity در Asp.net core2.1 (بخش دوم)

ASP.NET Core Identity یک سیستم جامع جهت مدیریت کاربران و نقشها و همینطور ورود و خروج در برنامه های ASP.NET Core می باشد. در این آ ...


اخبار و مقالات در فکر بکر عملیات crud و WebApi در Asp.net 6

از قبل مقالاتی با این عنوان در فکر بکر قرار گرفته شد اما در این آموزش میخواهیم با آپدیت جدید Asp.net core که آخرین نسخه آن Asp.n ...


اخبار و مقالات در فکر بکر آموزش ایجاد برنامه نصب (setup) قسمت دوم

در این مرحله برای پروژه ای که با زبان C# طراحی کردیم یک فایل setup خواهیم ساخت.در این آموزش برای ساخت برنامه setup از نرم افزار i ...


اخبار و مقالات در فکر بکر آموزش dependency injection در Asp.net core 2

تزریق وابستگی یکی از مباحث مبهم برای برنامه نویسانی که به تازگی با این عنوان آشنا شده اند می باشد.اما باید در نظر داشته باشید که ...


اخبار و مقالات در فکر بکر پیاده سازی سیستم احراز هویت کاربران در Asp.net MVC (بخش چهارم)

در این آموزش به پیاده سازی سیستم لاگین کاربران در Asp.net mvc خواهیم پرداخت. نکته ای که در اینجا حائز اهمیت است بدست آوردن نقش ...


اخبار و مقالات در فکر بکر سورس برنامه shutdown - restart - lock - sleep در سی شارپ

سورس بسیار زیبای برنامه shutdown - restart - lock - sleep در سی شارپ را از فکر بکر دانلود نمایید. لطفا به ادامه مطالب توجه نمایید ...


پیوندها
5 (1)

با سلام – در این مقاله به آموزش ایجاد آدرسهای کاربر پسند در برنامه های Asp.net خواهم پرداخت User friendly بودن URLs فقط برای کاربران سایت مورد پسند نیست بلکه برای برای موتورهای جستجو و سئوی سایت نیز بسیار مفید خواهد بود. لطفا به ادامه مطلب توجه بفرمایید
گروه : Asp.net MVC
تاریخ انتشار: 1395/05/11

فکر بکر

با سلام – در این مقاله به آموزش ایجاد آدرسهای کاربر پسند در برنامه های Asp.net خواهم پرداخت
User friendly بودن  URLs فقط برای کاربران سایت مورد  پسند نیست بلکه برای برای موتورهای جستجو و سئوی سایت نیز بسیار مفید خواهد بود. لطفا به ادامه مطلب توجه بفرمایید

آموزش را با یک مثال آغاز میکنیم.
در یک پروژه معمولی جهت نمایش لیستی از محصولات بگونه ای که کاربر با کلیک بر روی هر محصول بتواند جزییات محصول مورد نظر را ببیند بشکل زیر خواهد بود.
کلاس محصولات :


public class Product
{
    public string Description { get; set; }
    public int Id { get; set; }
    public string Name { get; set; }
    public float Price { get; set; }
}

معمولا پس از اجرای برنامه لیست محصولات بصورت زیر نمایش داده خواهد شد.

slug url 01

سپس با کلیک بر روی یک محصول جزییات آن با توجه به شکل زیر نمایش داده خواهد شد.

slug url 02

لطفا به url آن دقت نمایید.

slug url 03

معمولا URL هایی که بصورت عادی نمایش داده میشوند فیلد id داده یا محصول مورد نظر را به کنترلر و اکشن ارسال میکنند.اما برای ایجاد URL های کاربر پسند نام محصول را نیز در قسمت آدرس آن نمایش میدهند. برای انجام اینکار مراحل زیر را دنبال کنید.

کلاس Product را بصورت زیر ایجاد نمایید.

  public class Product

    {

        public string Description { get; set; }

        public int Id { get; set; }

        public string Name { get; set; }

        public float Price { get; set; }

 

     

        public string GenerateSlug()

        {

            string phrase = string.Format("{0}-{1}", Id, Name);

 

          

 

            phrase = Regex.Replace(phrase, @"[^a-z0-9-\u0600-\u06FF]", "-");

            phrase = Regex.Replace(phrase, @"\s+", "-").Trim();

            phrase = Regex.Replace(phrase, @"-+", "-");

 

            return phrase;

        }

 

        private string RemoveAccent(string text)

        {

            var bytes = Encoding.GetEncoding("UTF-8").GetBytes(text);

            return Encoding.UTF8.GetString(bytes);

        }

    }

 سپس ویوی نمایش لیستی از محصولات را بصورت زیر ویرایش نمایید . تا با کلیک بر روی یک محصول URL آن بجای نمایش کد محصول که  ترکیبی  از کد  و عنوان محصول را با فرمتی که در کلاس Product تعیین کردیم نمایش داده شود.

@model IEnumerable<SeoFriendlyUrls.Models.Product>

 

<h2>Product List</h2>

 

<table >

    <thead>

    <tr>

        <th>Name</th>

        <th>Price</th>

        <th>Image</th>

    </tr>

    </thead>

    <tbody>

    @foreach (var product in Model)

    {

        <tr>

            <td><a href="@Url.Action("Details", "Products", new { id = @product.GenerateSlug() })">@product.Name</a></td>

            <td>@product.Price</td>

            <td><img src="ادرس یک تصویر درج شود"/></td>

        </tr>

    }

    </tbody>
</table>

 

در صورتیکه اکنون برنامه را اجرا کنید قطعا با خطا مواجه میشود چرا که اکشن نمایش جزییات هر محصول با ID ان محصول در ارتباط میباشد اما این در حالیست که بخشی از url ما دارای مقادیر رشته ای میباشد و اکشن قادر به تبدیل رشته به عدد نمی باشد

public ActionResult Details(int id)
{
        ...
}

 برای حل این مشکل نیاز به مدیریت RouteData میباشد.
از داخل پوشه App_Start  کلاس RouteConfig را باز نمایید و کلاس SeoFriendlyRoute  را به انتهای کلاس RouteData  اضافه نمایید.

   public class SeoFriendlyRoute : Route
    {
        public SeoFriendlyRoute(string url, RouteValueDictionary defaults, IRouteHandler routeHandler) : base(url, defaults, routeHandler)
        {
        }

        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var routeData = base.GetRouteData(httpContext);

            if (routeData != null)
            {
                if (routeData.Values.ContainsKey("id"))
                    routeData.Values["id"] = GetIdValue(routeData.Values["id"]);
            }

            return routeData;
        }

        private object GetIdValue(object id)
        {
            if (id != null)
            {
                string idValue = id.ToString().Substring(0,1);
                
                var regex = new Regex(@"^(?<id>\d+).*$");
                var match = regex.Match(idValue);

                if (match.Success)
                {
                    return match.Groups["id"].Value;
                }
            }

            return id;
        }
    }

 

 

با استفاده از کلاس فوق مقدار ID موجود در Url را بدست می اوریم.
جهت استفاده از کلاس SeoFriendlyRoute متد RegisterRoutes از کلاس RouteConfig را بصورت زیر ویرایش نمایید.

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

            routes.Add("ProductDetails", new SeoFriendlyRoute("products/details/{id}",
                new RouteValueDictionary(new { controller = "Products", action = "Details" }),
                new MvcRouteHandler()));

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

 

 سپس برنامه را اجرا نمایید.

slug url 04

 

slug url 05

به url تصویر فوق دقت نمایید.

جهت عضویت در کانال فکر بکر بر روی لینک زیر کلیک نمایید :

https://Telegram.me/learningprograming

مطلب مشابهی وجود ندارد
شما اولین نفری باشید که نظر میدهید

U7TrTs

آموزش کار با کوکی ها (Cookie) در Asp.net core -------- آموزش رمزنگاری فایلها در asp.net core -------- مقایسه واحدهای اندازه گیری rem و em در css -------- آشنایی با مفهوم Generic در C#.net -------- نحوه خواندن اطلاعات از فایل appsetting.json در Asp.net Core -------- آموزش استفاده از CQRS و Mediator در Asp.Net Core -------- نحوه ایجاد image checkbox در html css -------- عملیات crud و WebApi در Asp.net 6 -------- آموزش ایجاد custom model binder در Asp.net core -------- آموزش استفاده از Log4net در Asp.net 5 -------- آموزش پیاده سازی UnitOfWork در Asp.net Core قسمت اول -------- پیاده سازی Repository Pattern بصورت Generic Class -------- وارد کردن فقط حروف فارسی و جلوگیری از ورود حروف فارسی در تکست باکس با استفاده از JQuery -------- سورس استفاده از کامپوننت Roxy File manager در Asp.net core -------- آموزش ساخت صفحه Page Not Found (404) در Aspnet core -------- آموزش ایجاد Tag Helper سفارشی در Asp.net core -------- آموزش نحوه ایجاد Model برای دیتابیس موجود در Entity Framework Core -------- آموزش نحوه Upload و Download در Asp.net core 2 -------- آموزش dependency injection در Asp.net core 2 -------- آموزش تحت شبکه کردن برنامه های مبتنی بر c# در sql server -------- آموزش استفاده از Bundler & Minifier در Asp.Net Core -------- مروری بر Identity در Asp.net core2.1 (بخش دوم) -------- مروری بر Identity در Asp.net core2.1 (بخش اول) -------- آموزش مبحث Single Responsibility Principle (SRP) از بخش اصول طراحی شی گرا (SOLID) -------- آموزش publish کردن برنامه های Asp.net core بر روی سرور iis -------- پیاده سازی مسیریابی با استفاده از الگوریتم پیمایش اول سطح یا جستجوی اول سطح (BFS) در سی شارپ -------- آشنایی با SignalR در Asp.net core -------- آموزش استفاده از کلاس SeedData در Asp.net Core -------- قالب سایت فروشگاهی -------- آموزش ایجاد برنامه نصب (setup) قسمت سوم -------- آموزش ایجاد برنامه نصب (setup) قسمت دوم -------- آموزش ایجاد برنامه نصب (setup) قسمت اول -------- آموزش عملیات CRUD با استفاده از Ragor Pages در Asp.net Core2.0 -------- آموزش ثبت تصویر توسط دوربین در برنامه نویسی اندروید به زبان c#.net -------- حل مساله n وزیر با استفاده از الگوریتم ژنتیک و بصورت گرافیکی -------- آموزش نمایش تصویر loading در سمت client جهت بارگزاری صفحات با حجم زیاد از سرور در asp.net mvc -------- آموزش اعتبار سنجی غیر همزمان(AsyncValidation) با استفاده از جاوااسکریپت در Asp.net mvc -------- آموزش ایجاد breadcrumb با استفاده از sitemap در MVC -------- آموزش ایجاد برنامه چت دوطرفه با استفاده از Socket در سی شارپ -------- آموزش ارسال و دریافت فایل در برنامه تحت شبکه با استفاده ار سوکت (Socket) --------

ابتدای صفحه