ورود

View Full Version : مبتدی: راهنمایی جهت اضافه کردن امکان امتیاز دهی به مطلب



ebiramgs
شنبه 21 تیر 1393, 07:49 صبح
سلام

من تازه شروع کردم به یادگرفتن MVC.یه بلاگ با MVC 5 نوشتم حالا میخوام برای هر مطلب امکان ارسال یک امتیاز از طرف کاربر در زمان نمایش مطلب وجود داشته باشه.

میدونم یه مدل باید برای امتیاز دهی بسازم که تقریبا به این شکل در میاد:


public class Vote
{
public int Id { get; set; }
public int VoteUp { get; set; }
public int VoteDown { get; set; }
public int PostId { get; set; }
public Vote()
{
VoteUp = 0;
VoteDown = 0;
}
}
و همینطور با ICollection مدل این Vote رو در مدل مطالبم فراخوانی کنم.

مشکام دقیقا از اینجا شروع میشه که نمیدونم چطوری این مقدار رو از کاربر بگیرم و تو دیتابیس ذخیره کنم!!!چون هیچ ورودی نمیگیره و فقط با کلیک کردن روی یه لینک باید متدش فراخوانی و اجرا بشه (فکر کنم)

منظورم اینه که میخوام یه سیستم امتیاز دهی + و - برای مطالبم درست کنم.

از دوستان اگه کسی بتونه در این مورد کمک کنه خیلی ممنون میشم.

amir_arsalan_k2
شنبه 21 تیر 1393, 10:01 صبح
خوب شما میتونین (+) و (-) رو Actionlink تعریف کنید و مقدار Action و Control آن رو ست کنید برای یک Action تا مقدار های + و - رو در دیتابیس ذخیره کنه و مقدار .


@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null)

ebiramgs
شنبه 21 تیر 1393, 12:55 عصر
دوست گلم این روشی که شما فرمودید انجام دادم و به نتیجه رسید ولی حالا یه مشکل دیگه!

الان من controller افزودن امتیازو اضافه کردم.

public ActionResult PlusVoter(Vote uservote, int id)
{
uservote.PostId = id;
uservote.VoteUp = ++uservote.VoteUp;
BlogDb.Votes.Add(uservote);
BlogDb.SaveChanges();
return RedirectToAction("Post" + "/" + id);
}

درست هم کار می کنه و برای هر مطلب امتیازشو ثبت می کنه ولی مثلا برای مطلب 3 اگه 10 بار امتیاز بدی 10 بار مقدار 1 رو ثبت می کنه که این هم درست نیست.
راهی هست که دفعه اول امتیاز 1 رو ثبت کنه و دفعات بعد فقط آپدیتش کنه؟
برای آپدیت دیتابیس از کد
BlogDb.Entry(uservote).State = EntityState.Modified;
هم استفاده کردم ولی ارور داد!
ممنون میشم راهنمایی کنید!تشکر...

hadi0x7c7
شنبه 21 تیر 1393, 19:41 عصر
شما اینو استفاده کنید ببنید درس کار میکنه؟

var t = BlogDB.Votes.Find(id);
t.voteUp++;
BlogDB.saveChanges();

بعد وقتی که id رو مفرستید فکر نکنم دیگه به پارامتر دیگه نیاز باشه.

amir_arsalan_k2
یک شنبه 22 تیر 1393, 11:39 صبح
من تو پروژه هام از یه کلاس استفاده میکنم که براتون میزارم شاید به کارتون بیاد که تمامی عملیات لازم توش هست ...

http://barnamenevis.org/showthread.php?451692-4-%D8%B9%D9%85%D9%84-%D8%A7%D8%B5%D9%84%DB%8C-%D8%AF%D8%B1-%D8%AF%DB%8C%D9%86%D8%A7%D8%A8%DB%8C%D8%B3&p=2029961#post2029961