PDA

View Full Version : آپدیت اتوماتیک ajax



sepehr.aliakbary
سه شنبه 04 شهریور 1393, 10:16 صبح
سلام
من برای هر پست یک گزینه ی لایک دارم که وقتی روش کلیک می کنیم توی دیتابیس یکی به لایک ها اضافه میشه. یک عدد هم جلوی لایک گذاشتم تا تعداد لایک ها رو نشون بده. می خوام با هربار کلیک روی لایک اون عددهم بطور اتوماتیک زیاد بشه اما در حال حاضر تا صفحه رو رفرش نکنم تعداد لایک های جدید رو نمایش نمیده. ممنون میشم کمکم کنید

helpsos
سه شنبه 04 شهریور 1393, 15:10 عصر
خب بهتر نیست که این کارهارو با جاوااسکریپت انجام بدید.
یعنی فعلا یه دونه به لایکها اضافه کن بعدا که صفحه رفرش شد برو از بانک مقدار واقعی رو بخون.
البته حواست باشه چون یه وقت یه نفر مثل من مریضه و میاد هی یه مطلب رو لایک می کنه . مثل اغلب نظر سنجی های داخل سایت های ایران مخصوصا دولتی هاش:لبخند:

sepehr.aliakbary
چهارشنبه 05 شهریور 1393, 20:27 عصر
مشکل من برطرف شد :
کد موجو در View رو به این صورت نوشتم :
@using (Ajax.BeginForm("PostMainPage", "Post", new { id = @item.ID }, ajax))
{
<div id="@item.ID" class="likes-show">@item.Likess.Count()</div>
<input type="submit" value="" class="like-button" />
}



و کد کنترلر رو هم این شکلی نوشتم :
public ActionResult PostMainPage(int? id)
{
var post = db.Posts.Find(id);
var mylike = db.Likes.Create();
Like like = new Like();
string user_ip = System.Web.HttpContext.Current.Request.UserHostAdd ress;


var query = from s in db.Likes
where s.PostId == id
&& s.IP == user_ip
select s;
if(query.Count()==0)
{
like.PostId = id;
like.UserId =Convert.ToInt32(Session["UserId"]);
like.IP = user_ip;
db.Likes.Add(like);
db.SaveChanges();
var like_count= db.Likes.Count(c => c.PostId == id);
Thread.Sleep(3000);
if(Request.IsAjaxRequest())
{
return Json(like_count);
}
}
else
return Content("Your Liked It !");
return Content("Your Liked It !");
}


الان با هربار کلیک روی لایک توی ویو یکی به دیتابیس اضافه میشه و همزمان توی view هم آپدیت میشه. ضمنا توی کنترلر چک می کنه که اگه با اون IP قبلا لایک کرده بود پیغام You Like It نمایش داده میشه.
امیدوارم اگر کسی با این مشکل مواجه شد به کمک این کدها مشکلش حل بشه