View Full Version : سوال: بدست آوردن id از آدرسی که id در آن نیست
سعید کشاورز
سه شنبه 28 آذر 1396, 11:12 صبح
سلام دوستان
یه سوال داشتم.
فرض کنید یه آدرس داریم به شکل زیر
site.com/Product/YourProductName
آیا میشه از طریق این آدرس آیدی اون محصول رو بدست آورد؟ نکته ای که وجود داره اینه نمی خوام کوئری بزنم از طریق productName .
اصلا همچین چیزی امکان پذیر هست؟ یعنی آیدی توی آدرس نباشه ولی بشه به دست آورد اون رو
parvizwpf
سه شنبه 28 آذر 1396, 11:35 صبح
خودتون چی فکر میکنید؟ مگر اینکه آیدی هم در آدرس وجود داشته باشه . وقتی اثری از آیدی نیست چگونه میشه؟
یا مگر اینکه با یک کوئری کل آیدی ها رو جایی نگه داشته باشید که در وب کار درستی نیست
mr.sirwan
سه شنبه 28 آذر 1396, 11:47 صبح
احتمال میدم این بحث رو بخاطر سئو دارین انجام میدین، یعنی دارین به جای ایدی محصول از نامش استفاده میکنین، به نظرم زیاد خودتونو درگیر سئو نکنین، نمیشه یه وبسایتی ساخت که از هر نظر سئوی عالی داشته باشه، نمیشه بعضی جاها پرفورمنس برنامه رو فقط به خاطر سئو زیر سوال برد، مثلا همین روش شما، باید یه کوئری بر اساس نام محصول بزنین، حالا ممکنه نام محصول یونیک نباشه و چندین رکورد رو برگردونه حالا چطوری بفهمین کدوم رکورد موردنظر شماست و ..... یا مثلا دارین یه رکوردی رو ویرایش میکنین که به ایدی محصول نیازه، شما باید کوئری بزنید که ایدی محصول رو بدست بیارید بعد عمل مقدار دهی ایدی رو انجام بدین، یعنی یک تراکنش اضافی و....
سعید کشاورز
سه شنبه 28 آذر 1396, 12:06 عصر
خودتون چی فکر میکنید؟ مگر اینکه آیدی هم در آدرس وجود داشته باشه . وقتی اثری از آیدی نیست چگونه میشه؟
یا مگر اینکه با یک کوئری کل آیدی ها رو جایی نگه داشته باشید که در وب کار درستی نیست
از اونجایی که توی برنامه نویسی کار نشد نداره گفتم تاپیک بزنم شاید این کار قابل انجام باشه ( حالا به هر نحوی)
احتمال میدم این بحث رو بخاطر سئو دارین انجام میدین، یعنی دارین به جای ایدی محصول از نامش استفاده میکنین، به نظرم زیاد خودتونو درگیر سئو نکنین، نمیشه یه وبسایتی ساخت که از هر نظر سئوی عالی داشته باشه، نمیشه بعضی جاها پرفورمنس برنامه رو فقط به خاطر سئو زیر سوال برد، مثلا همین روش شما، باید یه کوئری بر اساس نام محصول بزنین، حالا ممکنه نام محصول یونیک نباشه و چندین رکورد رو برگردونه حالا چطوری بفهمین کدوم رکورد موردنظر شماست و ..... یا مثلا دارین یه رکوردی رو ویرایش میکنین که به ایدی محصول نیازه، شما باید کوئری بزنید که ایدی محصول رو بدست بیارید بعد عمل مقدار دهی ایدی رو انجام بدین، یعنی یک تراکنش اضافی و....
دقیقا درست حدس زدین.
الان من توی CMS که نوشتم یه قسمت دارم که که کاربر URL SEO یا به اصطلاح slugUrl رو وارد میکنه.
حالا یه سری از کسایی که کار دیتا وارد کردن توی سایت رو وارد میکنند خیلی بی دقتی به خرج میدن و آدرس سئو رو اشتباه وارد میکنن از نظر املایی و هر چیزه دیگه ای..وقتی گوگل اون صفحه رو ایندکس میکنه و اون slugURL اگه ویرایش بشه خطای 404 میده.
حالا من اومدم آی دی هم توی آدرس اضافه کردم که Find شدن از طریق Id انجام بشه.
ولی آدرسام یه مقداری طولانی تر شد.
واسه همین خواستم تاپیک بزنم گفتم شاید راهی وجود داشته باشه.
parvizwpf
سه شنبه 28 آذر 1396, 16:00 عصر
از اونجایی که توی برنامه نویسی کار نشد نداره گفتم تاپیک بزنم شاید این کار قابل انجام باشه ( حالا به هر نحوی)
بر منکرش ...... کار بسیار خوبی هم هست. تبادل تفکر هم میشه . سپاس
آخه میدونی سوالتون حالت فلسفی داره . داره از عدم صحبت میکنه پس چیزی که نیست پس نیست که نیست . :متفکر:
سعید کشاورز
سه شنبه 28 آذر 1396, 16:32 عصر
بر منکرش ...... کار بسیار خوبی هم هست. تبادل تفکر هم میشه . سپاس
آخه میدونی سوالتون حالت فلسفی داره . داره از عدم صحبت میکنه پس چیزی که نیست پس نیست که نیست . :متفکر:
شما این لینک (https://www.web24.ir/go/1/519.aspx)رو ببین
آدرسش این شکلیه
https://www.web24.ir/go/1/519.aspx
وقتی کلیک میکنی آدرسش عوض میشه..
parvizwpf
سه شنبه 28 آذر 1396, 16:51 عصر
خب این نشون میده اولش کوئری میخوره بعد بصورت این url برمیگردونه . من منظورم آی دی ای که نیست کلا چجوری میخوای بفهمی چه آیدی ای بوده
Moien Tajik
سه شنبه 28 آذر 1396, 20:35 عصر
انجام اینکار به این شکل زیاد درست نیست ، چون اگر صرفا قرار باشه فقط با نام محصول URL ایجاد بشه ، ممکنه 2 محصول همنام داشته باشیم.
در اینصورت موقع جستجو فقط محصول اول نمایش داده میشه.
یک روش هست که به آخر نام محصول ID اضافه میکنن و بر اساس اون جستجو میکنن ، نمونه این روش :
https://www.danylkoweb.com/Blog/aspnet-mvc-routing-play-traffic-cop-with-your-routes-90
nunegandom
چهارشنبه 29 آذر 1396, 11:47 صبح
کافیه وقتی آدرس رو تغییر داد یه redirect 301 بسازید
من یک نام محصول دارم + یک url که unique هست
url رو هم موقع ورود محصول بعدی سمس سرور از طریق Remote چک میکنم
hakim22
جمعه 01 دی 1396, 10:32 صبح
اصلا همچین چیزی امکان پذیر هست؟ یعنی آیدی توی آدرس نباشه ولی بشه به دست آورد اون رو
بله میشه و خیلی هم ساده هست . کافیه در مرورگر از تب Network استفاده کنید تا تمام تراکنشهای خودتون با سرور رو ببینید. همه ی اطلاعات که به صورت POST به سرور ارسال میشه هم درون Form Data در HTTP ذخیره میشه و برای کاربری که داره از سایت استفاده میکنه قابل مشاهده هست.
سعید کشاورز
جمعه 01 دی 1396, 11:06 صبح
بله میشه و خیلی هم ساده هست . کافیه در مرورگر از تب Network استفاده کنید تا تمام تراکنشهای خودتون با سرور رو ببینید. همه ی اطلاعات که به صورت POST به سرور ارسال میشه هم درون Form Data در HTTP ذخیره میشه و برای کاربری که داره از سایت استفاده میکنه قابل مشاهده هست.
این موردی که گفتین یعنی باید دکمه های جزئیات محصول داخل تگ فرم باشه و اون دکمه باتن Submit باشه؟ :افسرده:
فکر کنم بد متوجه شدم.میشه یه مثال کوچیک بزنید؟
nunegandom
چهارشنبه 04 بهمن 1396, 21:01 عصر
با سلام مجدد
راه حل جدید من رفت اینکه از id استفاده کنم توی url و بعد از دریافت محصول از طریق id به آدرس صفحه slag هم اضافه کنم
به دلیل اینکه محصولات این سایتی که روش کار میکنم قراره زیاد بشه و نمیخوام پرفورمنس مشکل دار بشه برای همین مستقیم از link استفاده نمیکنم
چیزی که جناب حکیم گفتن رو تا حالا ندیدم(در هیچ سیستمی)
لینک نمونه (https://www.codeproject.com/Questions/1069482/how-to-make-URL-in-MVC-SEO-Friendly-and-Consistent)
url Friendly هست / مشکل پرفورمنس هم ایجاد نمیشه
با استفاده از ناگت پکیج glimpse (http://getglimpse.com/) هم میتونید پرفورمنس دو روش رو تست کنید
r4hgozar
پنج شنبه 05 بهمن 1396, 13:56 عصر
سلام اقا سعید.
خوبی؟
من خیلی وقته کد نمی زنم اما کاری که 2 سال پیش انجام دادم این بود.
من درست جواب دوستان رو ندیدم اما کاری که من انجام دادم اینه.
شما می تونی route رو تغییر بدی و برای سئو از productname استفاده کنی و با استفاده از همون صفحه رو بسازی و راحتترین کار اینه که ایدی رو هم با همون مطلب پاس بدی به صفحه و در تگ
@html.hiddenfor
قرار بدی در این صورت کاربر به صورت عادی نمی بینه ایدی رو اما شما می تونه هم به submit و اگه هم نخواستی به صورت jquery اون رو استفاده کنی.
البته بگم که هم از نظر سئو و هم از نظر کد نویسی بهتر یه خاصیت منحصر به فرد به ابتدای اون اضافه کنی ، مثل تاریخ و یا یع عدد منحر به فرد.
موفق باشی
EnKamran
جمعه 06 بهمن 1396, 12:53 عصر
چرا وقتی كه محصول داره ثبت میشه چك نمیكنی كه نام محصول تكراری نباشه؟اینجوری از همون اسلاگ استفاده میكنی و مطمعنی كه اسامی تكراری نداری
سعید کشاورز
جمعه 06 بهمن 1396, 17:04 عصر
چرا وقتی كه محصول داره ثبت میشه چك نمیكنی كه نام محصول تكراری نباشه؟اینجوری از همون اسلاگ استفاده میكنی و مطمعنی كه اسامی تكراری نداری
یه راهشم همینه که گفتی...یعنی اسلاگها رو چک کنیم.ولی ممکنه به مشکل بخوره کاربر و بخواد دوتا اسلاگ داشته باشه و یا جمله.
راه هایی هم که دوستان گفتن همگی نیازه به وجود تگ فرم داشت که به نظرم یه کار غیر منطقی بود.
فعلا با قرار دادن همون آی دی توی آدرس کار رو پیش بردم
general67
سه شنبه 10 بهمن 1396, 01:50 صبح
براتون یه راهکار دارم.آدرستون رو اینطوری روت کنین.
www.example.com/Products/EXP-2545/Name
EXP:پسسوندی برای شماره محصول.
و name هم یه نام مستعار محصوله یعنی اگر هم حذف بشه مشکلی در پردازش اطلاعات نداره.url friendly هم هست.
ویا اگر میخواهید فقط نام محصول یا هر آدرسی بجر کد محصول داشته باشین باید url تون پردازش بشه و بعد ریدایرکت بشه.
download69
سه شنبه 10 بهمن 1396, 23:29 عصر
فکر کنم سوالتو درست متوجه نشدم ولی خوب میتونی بر اساس نام محصول بری و آی دی رو از بانک بخونی مثلا اگه
site.com/Product/YourProductName
آدرس شما باشه در اکش مورد نظر آی دی محصول رو بر اساس YourProductName بخون حالا یا نمایش بده یا توی یک viewmodel یا یک viewbag قرار بده و جاهای مورد نظرت در view از اون استفاده کن
public ActionResult Product(string p){
var id = db.tbl.where(w => w.Pname == p).select(s => s.id)
}
nunegandom
جمعه 13 بهمن 1396, 15:23 عصر
KamranShakh (http://barnamenevis.org/member.php?104157-KamranShakh)
من از این مدل استفاده کردم فقط یه مشکل کوچولو داره - برای سایتی که حجم اطلاعاتش میدونین خیلی کمه خوبه اما اگه حجم زیاد شد سرعت میاد پایین چون باید یک عالمه لینک رو چک کنه تا پیداش کنه محصولمون رو - برای همین دور زدم برگشتم روی اینکه id بذارم و بعد slag رو اضافه کنم به id که هیچ مشکل پرفورمنسی توی این قسمت نباشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.