N2 CMS评级用户控制

时间:2009-03-03 20:56:39

标签: ajax rating n2

我目前正在N2 CMS框架中整合一个网站。我想做的事情之一是能够让用户使用相当标准的星级评级风格的用户控件或类似的东西评估网站的各种元素。

有没有人在N2中看起来有类似的内容?只是寻找关于在N2中实现这一目标的最佳方法的一些指示。

另外,不要认为它应该有所作为,但我目前正在N2中使用ASP MVC实现所有这些。

提前致谢

2 个答案:

答案 0 :(得分:0)

检查BlogSvc的source code(即将被称为AtomServer)

源/的WebCore /插件/评价者/ RaterService.cs

这是一个片段:

public RaterModel Rate(Id entryId, float rating, User user, string ip)
{
  LogService.Info("RateEntry: {0}, {1}, {2}", entryId, rating, ip);

  if (!AuthorizeService.IsAuthorized(user, entryId, AuthAction.RateEntryOrMedia))
    throw new UserNotAuthorizedException(user.Name, AuthAction.RateEntryOrMedia.ToString());

  if (rating < 1 || rating > 5) throw new ArgumentOutOfRangeException("Rating value must be 1 thru 5.");

  AtomEntry entry = AtomEntryRepository.GetEntry(entryId);
  if (entry.Raters.Contains(ip)) throw new UserAlreadyRatedEntryException(ip, entry.Id.ToString());

  entry.RatingCount++;
  entry.RatingSum += (int)Math.Round(rating); //temporarily force int ratings
  entry.Edited = DateTimeOffset.UtcNow;
  List<string> raters = entry.Raters.ToList();
  raters.Add(ip);
  entry.Raters = raters;
  entry = AtomEntryRepository.UpdateEntry(entry);
  return new RaterModel()
  {
    PostHref = RouteService.RouteUrl("RaterRateEntry", entryId),
    Rating = entry.Rating,
    CanRate = false,
    RatingCount = entry.RatingCount
  };
}

答案 1 :(得分:0)

这是我在我的网站上使用的评级内容 - 1到5星

N2CMS - EditableEnum非常适合这项工作

    [EditableEnum("RatingValue", 2, typeof(Rating))]
    public virtual string RatingValue
    {
        get { return (string)(GetDetail("RatingValue")); }
        set { SetDetail("RatingValue", value); }
    }

    /// <summary>
    /// Enum for the Vehicle Review Ratings
    /// </summary>
    public enum Rating
    {
        one = 1,
        two = 2,
        three = 3,
        four = 4,
        five = 5
    }