2011-03-01 115 views
0

我剛剛更新了WebForms/ASP.NET MVC 3混合應用程序以使用mvc3和剃鬚刀視圖引擎。一切似乎工作正常但是,現在當我使用Html.ActionLink()我的鏈接沒有得到正確解決或什麼?WebForms/ASP.NET MVC 3應用程序

例如:

@Html.ActionLink("Create New", "Create") 

產生一個錨定標記是這樣的:

<a href="/?action=Create&amp;controller=Network">Create New</a> 

代替我所期待的:

<a href="/Network/Create">Create New</a> 

這裏是控制器的操作方法:

public class NetworkController : Controller { 
    public ActionResult Create() { 
     return View(new Network()); 
    } 
} 

任何建議都會很棒。謝謝。

+0

您能否顯示您的路由配置,因爲這可能與它有關。 – 2011-03-01 07:21:54

+0

你能否包含你的路由配置?每個出現或遇到此問題的人都沒有提供足夠的信息來查看他們是否有同樣的問題。這個問題(目前的形式)對整個社區來說是無用的。 – 2011-06-05 14:25:18

回答

1

正如其他人所說,有絕對的東西了你的路由配置。

路由引擎有兩件事:它將URL解析爲一組路徑值(當您在瀏覽器中鍵入/ Network/Create併發生更正操作時會發生什麼),並解析了一組到URL的路由值(這是在您執行操作時發生的情況在動作鏈接中生成URL)。路線按順序測試,並且第一個聲明比賽勝利,這意味着如果你沒有正確設置它們,你並不總是具有相同的雙向結果。

推薦做路線測試w/MVCContrib路線助手,這可能會幫助您縮小問題範圍。另外,像@Chad Moran所說的那樣,依賴「環境」路由值通常是一種不好的做法(或者至少是不可靠的),如果您選擇ActionLink的更明確的重載之一,那麼您也可能獲得更好的結果。

0

您是否確定所有設置都正確的路由?這似乎表明沒有路線被發現,其中controlleraction是足夠的路線。

+0

如果我輸入/網絡/創建我得到正確的創建表單。 – 2011-03-01 01:40:53

+0

複製並粘貼路由註冊(默認情況下,這將在您的global.asax中) – smartcaveman 2011-03-01 01:58:26

0

由於您沒有提供基於上下文的方法的Controller參數。這個調用是否在另一個控制器的上下文中?

嘗試......

@ Html.ActionLink( 「新建」, 「創建」, 「網絡」)