2014-07-10 32 views
2

我曾在一個名爲RouteConfig一個靜態類,通過App_Start叫下面的代碼:路由在ASP.NET Web表單.NET 4.0 - GetVirtualPath返回null

// Create routes with default values for parameters 

routes.MapPageRoute(
"SearchResultsRoute", 
"SearchResults/{delegatesurname}/{starsid}/{dealercode}/{leadassessorid}/{locationid} /{datefrom}/{dateto}/{statusid}", 
"~/SearchResults.aspx", 
false, 
new RouteValueDictionary 
{ 
    {"delegatesurname", string.Empty}, 
    {"starsid", string.Empty}, 
    {"dealercode", string.Empty}, 
    {"leadassessorid", 0}, 
    {"locationid", 0}, 
    {"datefrom", string.Empty}, 
    {"dateto", string.Empty}, 
    {"statusid", 0} 
} 
); 

// EnableFriendlyUrls() is removed, as that was blocking the routing for some reason. 

我也稱爲類「導航」包含一個方法來創建一個URL:

protected string GetUrlFromRouteAndParams(string routeName, IDictionary<string,object> parameters) 
{ 
    var routeDict = new RouteValueDictionary(parameters); 
    var q = RouteTable.Routes.GetVirtualPath(null, routeName, routeDict); 
    return ""; // ignore this line its not pertinent to question 
} 

現在,當我致電上述GetUrlFromRouteAndParams,就像這樣:

var pageParams = new Dictionary<string, object>() 
    { 
     {"delegatesurname", _view.DelegateSurname}     
     {"starsid", _view.STARSID}, 
     {"dealercode", _view.DealerCode}, 
     {"leadassessorid", _view.LeadAssessorID}, 
     {"locationid", _view.LocationID}, 
     {"datefrom", string.Empty }, 
     {"dateto", string.Empty}, 
     {"statusid", 0} 
    }; 

    var url = navigator.GetUrlFromRouteAndParams("SearchResultsRoute", pageParams); 

GetUrlFromRouteAndParams中的GetVirtualPath調用返回null。

這是爲什麼?我該如何解決它?

在此先感謝。

+0

你得到在Q什麼價值? –

+0

q爲空,表示找不到路由,但我已經通過在瀏覽器中輸入URL searchresults/Scott /進行了測試,它工作得很好。 – Scott

+0

我也刪除了EnableFriendlyUrls(),因爲干擾路由 – Scott

回答

0

試試這個

//var routeDict = new RouteValueDictionary(parameters); 
var q = RouteTable.Routes.GetVirtualPath(null, routeName, null).VirtualPath; 
return q.ToString();