I recently had to create a Guest Book application for our local Tourism website.
Googling a decent
code sample didn't yield much so I created it from scratch. I'm making
the code available at the bottom of this post. In an effort to keep
things simple, I am leaving out the back-end administration since it
basically uses the same database table. It also means that I do not
have to walk through the membership sytem at this time. If I get requests, I may create another post on the admin part and update the code sample accordingly.
This is a Web Application project written in C#. There is a data access
layer and a business layer. This may appear redundant for such a simple
example as this but it does
make for good coding habits! Ideally, one might also create a base page
class and inherit from that, thus avoid unnecessary re-factorings later
on. The App-Code folder is used to hold the business and data classes.
Classes placed here are dynamically compiled which means we don't have
to compile them separately.
If you place the source files for your classes in the App_Code
folder, you must also add a reference to the System.Design assembly in
the compilation section of the Web.config file. This reference requires
the fully qualified assembly name of the System.Design assembly. You
can get the information required for the fully qualified name by running the Global Assembly
Cache Tool (Gacutil.exe) that ships with the Windows Software Development Kit (SDK), using
the following syntax:
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>gacutil /l System.Design
I still make use of the SqlHelper class which came with the original
"Data Access Application Block". Although this has been superceded by
the Enterprise Library, I think it's much more appropriate for smaller
projects. You can find out more here. When trying to incorporate the SqlHelper class into the project, I received the following error:
error CS0103: The name 'SqlHelper' does not exist in the current context
After you exhaust all that Google has to offer, you can try what I did and hack the project file by changing:
<content Include="App_Code\Data\SqlHelper.cs" />
<compile Include="App_Code\Data\SqlHelper.cs" />
Happy Days :-)
Note that in the real-world you would use a CAPTCHA control. For
simplicity I left it out here, but I originally used Peter Kellner's Ultimate CAPTCHA Control. It's easy to use and Peter was on hand to offer email assistance!
Feel free to download the code and use it any way you will!
GuestBook.zip (74.71 kb)
Guest_Book_DB.zip (3.13 kb)
I've been holding on to this domain name for some time. I've never been
in the business of buying and selling domain names. However, on a rare
quiet day, I would often take a pad of paper and start brainstorming
domain names around some theme or other. Open up a Godaddy search and start entering your ideas.
There is probably a whole science
around not only the topic of what makes a good domain name, but of the
best way to find one. The five/six letter - three vowel rule seems to
work pretty well; think Yahoo, Amazon, Google and you get the idea.
Short and sweet is good and the process of brainstorming a good name
and finding that is is available is often reward enough.
The domain name is NetCoder.net and you can judge the price for yourself by looking at what some similar names have been going for:
* Coderz.net --> $131,000
* Mycoder.com --> $10,000
* Allcoder.com --> $5,000
* Javacoders.net --> $4,000
Now, I know what you're thinking... this guy must be mad! Well, I'm not and the figures speak for themselves... How about Britneyskids.com for a cool $995,000?
Joking aside, if you are interested in using the NetCoder.net domain name then you can snag it at a reasonable price at sedo.com.
Make an offer and I might just accept it! Alternatively, if you would
like to trade a pre-CBS stratocaster, then just pop me an email :-)
Apologies for not posting for so long. This is just a quick update of
what I've been up to and what I'll be blogging about in 2008. First
off, there have been two new additions to the family, as shown in the
picture. We got Tripper
(Tripper Grace, not to be confused with Tipper Gore) as a nine-week old
puppy in Northern California and he is still being housetrained! The
other addition was a Rory Gallagher 1961 Stratocaster, hand-made by Fender.
I'm in the process of setting up the new SharePoint Intranet for the
County where I work. As part of the training, a team of us attended the
DevConnections conference last month in Las Vegas. The most informative session for me was the "Structured Approach to Building MOSS 2007 Publishing Sites"
given by Andrew Connell. My goal is to have a repeatable deployment
model which lends itself to source control. In addition, I'm looking to
have a comprehensive backup and restore process. By comprehensive, I
mean one which takes into account such missing pieces as customization,
Web Parts and the IIS metabase. This is an ongoing task for me right
now. But Andrew's presentation brought me a lot closer. Chapter 4 of Real World SharePoint 2007 was penned by Andrew and gives a good insight into Feature-based deployment.
SharePoint is one big jigsaw with a couple of pieces missing. The real
task is identifying these missing pieces and not blindly trusting the
OOTB functionality. This is true whether you are creating a development
environment or a backup and restore process. I will blog more about my
experiences in the coming months.