What DB are you using? MSSQL, MYSQL, ACCESS,...?
Assuming you are using MSSQL why don't you use an isnull() function to convert the null value to an empty string? that whay you don't need to check if the value is null.
something like this
Code:
Select HotelName, IsNull(URLTitle,HotelName) As URLTitle
Code:
<asp:HyperLink ID="hplHotelName" CssClass="linkhotel" runat="server" NavigateUrl='<%# "/hotel/" & Eval("URLTitle").ToString.Replace(" ","-").Replace("&","and") & ".aspx" %>' Text='<%# Eval("HotelName").ToString %>'> </asp:HyperLink>
also i think you have to use an HTML Anchor Tag for this because server controls don't allow <% %> constructs but i don't remember if that applies on databinding, i don't think it does?
Code:
<a id="hplHotelName" cass="linkhotel" href='<%# "/hotel/" & Eval("URLTitle").ToString.Replace(" ","-").Replace("&","and") & ".aspx" %>'><%# Eval("HotelName").ToString %></a>
Either way it would be much simpler to just do this in your Query. You could even do the replace function in the query as well if you wanted to.