2012-06-08 70 views
3

當前顯示在我的瀏覽器的頁面是:http://localhost:19255/Object/Browse/1ActionLink在URL中包含當前{id}

此頁面上的鏈接與創建:@Html.ActionLink("...", "Browse", "Object")

但生成的鏈接居然是:/Object/Browse/1

我發生了什麼事的理解是MVC看到我的路線有{ID}部分,這是我沒有供應。所以它繼續幷包含當前頁面中的{id}部分。

不夠公平,但是如何在沒有它的情況下創建鏈接?我試過nullnew { id = null },但都沒有工作。

+0

所以,你要沒有PARAM操作鏈接這是我聽到的嗎? –

+0

是............. –

+0

沒有看到創建'/ Object/Browse'視圖的動作我不確定你怎麼看不到'id',因爲它看起來像View需要一個值來呈現視圖以使用該「id」查看對象。那有意義嗎?大聲笑 –

回答

2

的......雖然沒有了以下工作:

@Html.ActionLink("...", "Browse", "Object", null)    // Has no effect 
@Html.ActionLink("...", "Browse", "Object", new { id = null }) // Error 

下解決了問題:

@Html.ActionLink("...", "Browse", "Object", new { id = "" }) // No ID is passed 
+0

如果您想深入瞭解原因,可以在這裏找到ASP.NET MVC源代碼:http://aspnet.codeplex.com/releases/view/58781 –

0

我相信MVC從模型直接拉這個Id,因爲你沒有指定它。我以前看過這個,但我現在沒有時間來驗證它。

嘗試覆蓋@Model.Id之前呈現該鏈接,看看它是從哪裏來的。然後,我認爲,如果您需要並將@Model.Id = null設置爲默認值,您可以將Id值存儲在新變量中。一個黑客攻擊的種類當然:)

+0

我的模型沒有'Id'成員。它必須以某種方式從視圖中獲取它。 –

相關問題