1

私は現在、N2 CMS フレームワークでサイトをまとめています。私がやりたかったことの 1 つは、かなり標準的な星評価スタイルのユーザー コントロールなどを使用して、サイトのさまざまな要素をユーザーが評価できるようにすることでした。

特にN2内で実装されたものに似たようなものはありますか? N2でこれを達成するための最良の方法について、いくつかの指針を探しています。

また、違いがあるとは思いませんが、現在、N2 内で ASP MVC を使用してこれらすべてを実装しています。

前もって感謝します

ポール

4

2 に答える 2

0

これは、コンテンツを評価するために私の Web サイトで使用するものです - 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
    }
于 2012-12-13T15:42:15.297 に答える
0

BlogSvc (まもなく AtomServer と呼ばれる)のソース コードを確認する

ソース/WebCore/プラグイン/評価者/評価者サービス.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
  };
}
于 2009-03-03T21:17:21.937 に答える