Я работаю на веб-сайте по недвижимости и использую маршрутизацию URL, чтобы мой клиент мог в своих рекомендуемых свойствах показать свой адрес в URL: www.realestatewebsite.com/featured/123-Fake-St
Тем не менее, я новичок в URL Routing и думаю, что выбрал плохой ярлык.Первоначально я хотел бы использовать первичный ключ моей базы данных для доступа к свойствам (propID), но не хотел передавать его в URL, поэтому вместо этого использовал адрес, чтобы получить propID и использовать его оттуда.Однако, если я пытаюсь назначить Page.RouteData.Values ["address"] строке, и в URL-адресе нет адреса, он выдает исключение.Поэтому у меня есть оператор try / catch, чтобы справиться с этим.Это кажется плохой практикой для меня все же.Если кто-нибудь может сказать мне, приемлемо ли это сделать, или если есть гораздо лучшее решение, пожалуйста, дайте мне знать.
Вот Global.asax:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("", "Featured/{address}", "~/Featured/Default.aspx");
}
А вот метод с www.website/com/Featured/Default.aspx:
protected int getPropID()
{
string address;
int propID = -1; //If the method returns -1 the page just lists all featured properties
try
{
address = Page.RouteData.Values["address"].ToString();
}
catch (Exception ex)
{
return propID;
}
if (address != null)
{
string strSQL = "SELECT propID FROM tblFeatured WHERE address = '" + address + "'";
DataTable dt = da.FillDataTable(strSQL);
if (dt.Rows.Count > 0)
propID = Convert.ToInt32(dt.Rows[0]["propID"]);
return propID;
}
else
return propID;
}