2010-07-13 36 views
1

我試圖從數據庫中寫出動物。我所看到的用於創建查看頁面的所有示例在URL中都有硬編碼的「節點」。我可以讓我的第一個視圖工作,但我的第二個視圖沒有寫出正確的URL到第三個視圖。因此,舉例來說,我想我的網址是:在VB.NET MVC視圖中創建URL的問題

/animals/ 
/animals/canines/ 
/animals/canines/schnauzer 

我的默認路由設置:

> routes.MapRoute(_ 
>    "Default", _ 
>    "{controller}/{action}/{id}", _ 
>    New With {.controller = "Home", .action = "Index", .id = 
> UrlParameter.Optional} _ 
>  ) 

第一個URL的偉大工程,我可以沿着列表中的第一個動物羣體正確鏈接到第二個網址。我這樣做如下:

for each animal in model 
    Html.ActionLink(animal.animal_name,animal.animal_name.Trim) 
next 

我還可以得到第二寫出犬組(所以我知道我的模型是工作),然而這第二個「犬」頁面上的URL.Action失去「犬」的網址,以便它呈現爲:

/animals/schnauzer 

我已經想盡辦法,我能想到的寫出來,包括鏈接:

<a href="<%= url.action(canine.dog_name.Trim)) %>"> 
<a href="<%= Url.Content("~" & url.action(canine.dog_name.Trim)) %>"> 

和其他一些不值得展示的東西。 ;-D

...我在猜測我在路徑路徑中缺少某些東西,但它是什麼?這不可能是我必須知道我在每個頁面上的路徑才能寫出URL - 可以嗎?

在此先感謝您的幫助!

回答

0

您配置的路線查找三個組件,控制器,操作和標識。 在你的案例/ animals/schnauzer中,就HTTP路由(和鏈接生成)而言,你正在尋找的不僅僅是單個路由元素。它將動物/犬類視爲兩個不同的值。 如果你正在尋找讓像http://yoursite/Family/Species路線,將其指定爲這樣:

routes.mapRoute("familyspecies", "animals/{family}/{species}", new { controller = "Home", action = "Animals", Species = UrlParameter.Optional}); 

,並通過家庭和種到自己的行爲

public ActionResult Animals(string family, string species){...} 

OR 使用通配符路線後直接一切對id的行爲

routes.MapRoute("{controller}/{action}/{*id}");