2010-11-22 28 views
0

對於MVC來說是合理的。我的問題是我有一個控制器有3個不同的ActionResult,根據枚舉調用它。
所有這三個操作結果都會返回相同的視圖,但視圖模型會使用不同的列表。在該視圖中,用戶應該能夠點擊列表中的項目並且基於項目的ID來查看細節。
例如網站/設施/圖書館返回圖書館清單,網站/設施/圖書館/ 1返回詳細信息。當你輸入完整的路徑也能正常工作,但在查看自己點擊錨MVC Url相對於變量ActionResult

<a href="@item.ID">@item.Name</a> 

在列表中的項目的URL返回網站/設施/ 1,而不是網站/設施/庫/ 1。我不能使用ActionLink,因爲要調用的Action是動態的。我知道這可以通過爲每種類型創建不同的視圖來解決,但我想知道是否可能有其他方法?

在此先感謝。

回答

1

可以使用這樣的代碼(一個javascript招):

<a href="" onclick="window.location = window.location + @item.ID">@item.Name</a> 

或者,如果你想使用HREF屬性,你可以使用這樣的代碼:

<%=Html.ActionLink(item.Name, "Facilities", ViewData("ActionName"), new {id = item.ID}) %> 

(在這你必須在控制器中指定ViewData(「ActionName」)。

+0

我試過第二個選項,它的如此簡單我感到慚愧,我沒有想到它。理想情況下,需要在沒有Javascript的情況下工作,因爲它適用於移動開發,並非所有手機都有可用的JavaScript。第二種選擇是偉大的,但。謝謝。 – Chiefy 2010-11-22 14:26:46

1

我建議你改變它,讓你只有一個動作,但它需要一個參數來代替,並且根據參數你推入不同的列表到視圖(或許使用3個不同的「幫助函數」), 。至少我會如何實現你所描述的內容!

祝你好運!

+0

多數民衆贊成我最初如何實施它,但如果有人要複製列表的URL(或書籤),然後再次使用它不會採取一個參數,並會失敗。 – Chiefy 2010-11-22 14:03:32

+0

爲什麼不能複製和/或添加書籤?由於參數包含在URL中,它也應該出現! (除非用戶刪除那部分,但這是他們的問題是不是?^^)有了一些奇特的路由,你會有完美的網址。但很好,你找到了一個你很滿意的答案:) – Robin 2010-11-22 16:37:58