امتیاز دهی (Rating) در MVC
سه شنبه 6 مرداد 1394در این مقاله تصمیم دایم نحوه ایجاد یک سیستم امتیاز دهی به محصولات رابدون استفاده از کامپوننت بررسی کنیم .
ابتدا یک پروژه جدید ایجاد میکنیم
سپس یک مدل با نام Product برای ساخت اطلاعات پیشفرض ایجاد میکنیم
public class Product
{
public Product()
{
this.Rate = this.Id = 0;
this.Name = this.Description = "";
}
public int Id { get; set; }
public int Rate { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
یک کنترلر با نام Home ایجاد میکنیم و در اکشن Index آن اطلاعات پیشرفض را پر کرده و به View ارسال میکنیم
public ActionResult Index()
{
var model = new List<Product>();
model.Add(new Product() { Id = 122, Name = "کفش ورزشی", Description = "این کفش در 3 رنگ متنوع می باشد" });
model.Add(new Product() { Id = 132, Name = "ویژوال استادیو 2015", Description = "این ابزار بسیار قدرتمند است" });
model.Add(new Product() { Id = 142, Name = "مانیتور سامسونگ", Description = "مانیتور در ابعاد 22 و 24 اینچ موجود است" });
model.Add(new Product() { Id = 152, Name = "آب آناناس", Description = "پر از مواد مفید برای بدن میباشد" });
model.Add(new Product() { Id = 162, Name = "آب نارگیل", Description = "پر از مواد مفید برای بدن میباشد" });
return View(model);
}
برای ثبت و نمایش امتیاز یک PartialView با نام _Rating در Shared ایجاد میکنیم .
@model SO14014091.Models.Product
<h3>@Model.Name <small>@Model.Description</small></h3>
<div class="ratting-item" data-pid="@Model.Id">
<input class="rating" name="vote" type="radio" value="1" />
<input class="rating" name="vote" type="radio" value="2" />
<input class="rating" name="vote" type="radio" value="3" />
<input class="rating" name="vote" type="radio" value="4" />
<input class="rating" name="vote" type="radio" value="5" />
</div>
<span class="result"></span>
در ویو Index برای استفاده از امتیاز و نمایش آنها تصمیم داریم از Jquery استفاده کنیم
$('.ratting-item').rating(function (vote, event) {
var anchor = $(event.currentTarget),
pid = anchor.closest(".ratting-item").data("pid"),
url = '@Url.Action("RateProduct", "Services")';
// show message while doing the database round trip
$('.ratting-item[data-pid=' + pid + ']')
.next()
.text("در حال ثبت امتیاز ...");
$.ajax({
url: url,
type: "GET",
data: { rate: vote, id: pid },
success: function (data) {
if (data.success) {
// all went well, here you can say Thank you
$('.ratting-item[data-pid=' + data.pid + ']')
.next()
.text("امتیاز ثبت شد - کد محصول : " + data.pid );
}
else {
// There must be an Exception error, let's show it
$('.ratting-item[data-pid=' + data.pid + ']')
.next()
.text("اشتباهی رخ داده است");
}
},
error: function (err) {
// the call thrown an error
$('.result').text(err);
},
complete: function () {
//$(".loading").hide();
}
});
});
سپس ویو Index را کامل میکنیم و محصولات رو به همراه قسمت امتیاز دهی توسط یک حلقه Foreach نمایش میدهیم
<div class="tab-content">
<div class="tab-pane active" id="single">
<h2>امتیاز </h2>
@Html.Partial("_Rating", Model.FirstOrDefault())
</div>
<div class="tab-pane" id="multiple">
<h2>امتیاز محصولات</h2>
@foreach (var p in Model)
{
@Html.Partial("_Rating", p)
}
</div>
</div>
خروجی کار به شکل زیر است :

- ASP.net MVC
- 3k بازدید
- 8 تشکر