13 public ActionResult Index()
14 {
15 ViewData.Model = Product.Products;
16 return View(“Index”);
17 }
18
19 public ActionResult AddProductToCart(string productID, int quantity)
20 {
21 CartController cartController = new CartController();
22 cartController.AddProduct(productID, quantity);
23 return Index();
24 }
25
26 public ActionResult RateProduct(string productID, string rating)
27 {
28 RatingController ratingController = new RatingController();
29 ratingController.RateProduct(productID, rating);
30 return Index();
31 }
28 public ActionResult DisplayCart()
29 {
30 Cart cart = GetCart();
31 return View(“Cart”, cart);
32 }
33
34 public ActionResult AddProduct(string productID, int quantity)
35 {
36 Cart cart = GetCart();
37 Product product = Product.Products.Find(s => s.ID == productID);
38 cart.AddProduct(product, quantity);
39 SetCart(cart);
40 return View(“Cart”, cart);
41 }
22 private Rating GetRatings()
23 {
24 Rating rating = System.Web.HttpContext.Current.Session["Rating"] as Rating;
25 if (rating == null)
26 {
27 rating = new Rating();
28 }
29 return rating;
30 }
31
32 private void SetRating(Rating rating)
33 {
34 System.Web.HttpContext.Current.Session["Rating"] = rating;
35 }
This example gets a list of all topics that digg offers. The code is pretty simple:
// Create the web request, change the appkey to for your applications
HttpWebRequest request = WebRequest.Create("http://services.digg.com/topics?appkey=http%3A%2F%2Fgaskell.org") as HttpWebRequest;
// won't get a response from digg if UserAgent is not set
request.UserAgent = ".net";
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
DataSet ds = new DataSet();
ds.ReadXml(reader);
this.topicsGridView.DataSource = ds.Tables[1];
this.topicsGridView.DataBind();
}
]]>About the algorithm (from Stranger Studios):
- The pagination object has a “previous” and “next” button which takes the user to the next page. The previous button is disabled on the first page. Similarly, the next button is disabled on the last page.
- The pagination object will always display links to the first two pages and the last two pages of the set.
- The pagination object will always display links to the first x (adjacents in the code) pages before and after the current page.
- The pagination object will only show at most 5+2x links (first two + prior x + current page + next x + last two). All links not shown will be replaced by …
A little preview:
You can download the project here. I didn’t spend a ton of time testing this code, please leave any bug reports in the comments – Thanks!
Update: Changed the code a bit – paging is now handled via query string instead of posting back. Not a huge deal but the code is easier to read.
]]>Here’s the basic tag:
<uc1:DiggItButton ID="DiggItButton"
runat="server"
Url="http://gaskell.org"
Title="Test title"
Body="Test body" />
You don’t need to set the Url, Title and Body properties in the tag, they are also available as public properties in the codebehind. The only property that is required to be set is the Url property – if you pass in the Title and/or Body, digg will pre-populate those fields. Digg also asks that you url encode your strings and this control handles that for you. Check out the code and sample page here.
]]>