📄 commentrating.cs
字号:
namespace ASPNET.StarterKit.Communities {
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
//*********************************************************************
//
// CommentRating Class
//
// WebControl that enables users to rate comments.
//
//*********************************************************************
[Designer(typeof(ASPNET.StarterKit.Communities.CommunityDesigner))]
public class CommentRating : WebControl, INamingContainer {
const string DefaultRatingImagePath = "~/Communities/Common/Images/Ratings/";
string _ratingImagePath = String.Empty;
RadioButtonList rdlRating;
LinkButton btnSubmit;
UserInfo objUserInfo;
SectionInfo objSectionInfo;
ContentInfo objContentInfo;
int _contentPageID;
int _averageRating = -1;
int _yourRating = -1;
bool _displayOnly = false;
string _averageRatingText = "Average Rating: ";
string _yourRatingText = "Your Rating: ";
string _goodText = "Good";
string _badText = "Bad";
string _submitText = "Submit Rating";
//*********************************************************************
//
// CommentRating Constructor
//
// Retrieves user info object from context.
//
//*********************************************************************
public CommentRating() : base(HtmlTextWriterTag.Table) {
// Set default CSS class
CssClass = "rating";
if (Context != null) {
// Get UserInfo object
objUserInfo = (UserInfo)Context.Items["UserInfo"];
// Get SectionInfo object
objSectionInfo = (SectionInfo)Context.Items["SectionInfo"];
// Get ContentInfo
objContentInfo = (ContentInfo)Context.Items["ContentInfo"];
_averageRating = objContentInfo.AverageRating;
_yourRating = objContentInfo.YourRating;
_contentPageID = objContentInfo.ContentPageID;
}
}
//*********************************************************************
//
// Rating_Changed Event
//
// Event that is raised when a user picks a new rating.
//
//*********************************************************************
public event EventHandler Rating_Changed;
//*********************************************************************
//
// DisplayOnly Property
//
// When true, only displays ratings and does not enable user
// to update ratings. Useful for smaller display footprint.
//
//*********************************************************************
public bool DisplayOnly {
get { return _displayOnly;}
set { _displayOnly = value;}
}
//*********************************************************************
//
// AverageRatingText Property
//
// The text that is displayed for Average Rating.
//
//*********************************************************************
public string AverageRatingText {
// rs 2003-09-23
get { return _averageRatingText; }
set { _averageRatingText = value; }
}
//*********************************************************************
//
// YourRatingText Property
//
// The text that is displayed for Your Rating.
//
//*********************************************************************
public string YourRatingText {
get { return _yourRatingText; }
set { _yourRatingText = value; }
}
//*********************************************************************
//
// RatingImagePath Property
//
// The path to the directory that contains rating images
//
//*********************************************************************
public string RatingImagePath {
get { return _ratingImagePath; }
set { _ratingImagePath = value;}
}
//*********************************************************************
//
// AverageRating Property
//
// The Average Rating for this item.
//
//*********************************************************************
public int AverageRating {
get { return _averageRating;}
set { _averageRating = value; }
}
//*********************************************************************
//
// YourRating Property
//
// The current user's rating.
//
//*********************************************************************
public int YourRating {
get { return _yourRating; }
set { _yourRating = value; }
}
//*********************************************************************
//
// GoodText Property
//
// The text that is displayed for highly rated items.
//
//*********************************************************************
public string GoodText {
get { return _goodText; }
set { _goodText = value; }
}
//*********************************************************************
//
// BadText Property
//
// The text that is displayed for lowly rated items.
//
//*********************************************************************
public string BadText {
get { return _badText; }
set { _badText = value; }
}
//*********************************************************************
//
// SubmitText Property
//
// The text that is displayed for submitting a rating.
//
//*********************************************************************
public string SubmitText {
get { return _submitText; }
set { _submitText = value; }
}
//*********************************************************************
//
// btnSubmit_Click Method
//
// This method is executed when a user submits a new rating.
//
//*********************************************************************
private void btnSubmit_Click(Object s, EventArgs e) {
int _rating;
if (rdlRating.SelectedIndex != -1) {
_rating = Int32.Parse(rdlRating.SelectedItem.Value);
_averageRating = RatingUtility.AddRating(objUserInfo.Username, _contentPageID, _rating);
_yourRating = _rating;
}
}
//*********************************************************************
//
// Rating_Click Method
//
// The method raises the Rating_Changed event.
//
//*********************************************************************
private void Rating_Clicked(Object sender, EventArgs e) {
Rating_Changed(this, EventArgs.Empty);
}
//*********************************************************************
//
// CreateChildControls Method
//
// If the user can rate content, add the submit button.
//
//*********************************************************************
override protected void CreateChildControls() {
Controls.Clear();
if (objUserInfo.MayRate) {
// Create RadioButton List
rdlRating = new RadioButtonList();
rdlRating.RepeatDirection = RepeatDirection.Horizontal;
for (int i=1;i<6;i++)
rdlRating.Items.Add(i.ToString());
Controls.Add(rdlRating);
// Create Submit Button
btnSubmit = new LinkButton();
btnSubmit.ID = "btnSubmit";
btnSubmit.Text = SubmitText;
btnSubmit.Click += new EventHandler(btnSubmit_Click);
Controls.Add(btnSubmit);
}
}
//*********************************************************************
//
// Controls Property
//
// Make sure that when you access a child control, the
// CreateChildControls method has been called.
//
//*********************************************************************
override public ControlCollection Controls {
get {
EnsureChildControls();
return base.Controls;
}
}
//*********************************************************************
//
// Render Method
//
// Don't render if ratings are not enabled.
//
//*********************************************************************
override protected void Render(HtmlTextWriter tw) {
// Check if ratings are enabled
if (objSectionInfo.EnableCommentRatings)
base.Render(tw);
}
//*********************************************************************
//
// RenderContents Method
//
// Render the Rating control UI to the browser.
//
//*********************************************************************
override protected void RenderContents(HtmlTextWriter tw) {
// Display Checkbox List
if (objUserInfo.MayRate && YourRating == -1 && !DisplayOnly) {
tw.RenderBeginTag(HtmlTextWriterTag.Tr);
tw.RenderBeginTag(HtmlTextWriterTag.Td);
tw.Write(_badText);
tw.RenderEndTag();
tw.RenderBeginTag(HtmlTextWriterTag.Td);
rdlRating.RenderControl(tw);
tw.RenderEndTag();
tw.RenderBeginTag(HtmlTextWriterTag.Td);
tw.Write(_goodText);
tw.RenderEndTag();
tw.RenderBeginTag(HtmlTextWriterTag.Td);
tw.Write("|");
tw.RenderEndTag();
tw.RenderBeginTag(HtmlTextWriterTag.Td);
btnSubmit.RenderControl(tw);
tw.RenderEndTag();
tw.RenderEndTag(); // close tr
// Display Current Rating
if (AverageRating != -1) {
tw.RenderBeginTag(HtmlTextWriterTag.Tr);
tw.AddAttribute(HtmlTextWriterAttribute.Colspan, "4");
tw.RenderBeginTag(HtmlTextWriterTag.Td);
tw.Write(_averageRatingText);
tw.Write( GetRatingImage(_averageRating) );
tw.RenderEndTag();
tw.RenderEndTag(); // close tr
}
} else {
tw.RenderBeginTag(HtmlTextWriterTag.Tr);
// Display Your Rating
if (YourRating != -1) {
tw.RenderBeginTag(HtmlTextWriterTag.Td);
tw.Write(_yourRatingText);
tw.Write( GetRatingImage(_yourRating) );
tw.RenderEndTag();
}
if (DisplayOnly) {
tw.RenderEndTag(); // close tr
tw.RenderBeginTag(HtmlTextWriterTag.Tr);
}
// Display Average Rating
tw.RenderBeginTag(HtmlTextWriterTag.Td);
if (AverageRating != -1) {
tw.Write(_averageRatingText);
tw.Write( GetRatingImage(_averageRating) );
}
else
tw.Write(" ");
tw.RenderEndTag();
tw.RenderEndTag(); // close tr
}
}
//*********************************************************************
//
// GetRatingImage Method
//
// Returns the appropriate image for a particular rating.
//
//*********************************************************************
private string GetRatingImage(int ratingNumber) {
if (_ratingImagePath != String.Empty)
return String.Format( "<img src=\"{0}Rating{1}.gif\">", Page.ResolveUrl(_ratingImagePath), ratingNumber );
else
return String.Format( "<img src=\"{0}Rating{1}.gif\">", Page.ResolveUrl(DefaultRatingImagePath), ratingNumber );
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -