2015-10-06 40 views
0

我遇到了MVC 5中有關Html.Actionlink的不一致之處。在不同的cshtml文件中,我可以使用相同的代碼,但生成的url目標不同。MVC Action Link問題

例如,這行代碼:

<td>@Html.ActionLink(item.Description, "Edit", new { item.ParentTableID }) </td>

生成此URL

localhost\MyControllerClass\Edit?ParentTableID=35

也就是說然後適當地調用的ActionView方法編輯和如預期的資訊提供35參數。

然而,在另一CSHTML文件,該行

<td>@Html.ActionLink("Edit", "EditChild", new { id = f.ApplicationTableFieldID})</td>

產生這個網址

localhost/MyControllerClass/Edit/7

,當它擊中EditChild動作視圖,參數爲空。

我已經看到了這個現在幾次,但還沒有能夠明白是什麼導致了差異。但我需要第一個結果。

謝謝。

+0

不是說我知道這個問題,而是在每個操作鏈接中,對於參數,你指定'id'= f.ApplicationTableFieldID,而在另一箇中,你只需要item.ParentTableID。你有沒有試過讓它們一樣?關於具有@@ Html.ActionLink(「Edit」,「EditChild」,new {f.ApplicationTableFieldID})' –

回答

1

確保您的ID參數在您的Action方法和ActionLink Html幫助程序中都正確命名。視覺差異來自MVC 默認路由,以及如何採取一個名爲ID參數,並把它的URL沒有查詢字符串(?其次的東西)

如果你的操作方法是這樣的

public ActionResult EditChild(int ParentTableID){} 

然後,你將需要有當你通過它放回你的URL

<td>@Html.ActionLink("Edit", "EditChild", new { ParentTableID = f.ApplicationTableFieldID})</td> 

現在應該出示下列URL您的ID參數命名ParentTableID

localhost\MyControllerClass\EditChild?ParentTableID=3 
+0

如果它只接受一個參數,在調用動作時是否需要指定參數名稱? (不是批評,合法查詢) –

+0

@ jaredlee.exe - 這取決於你的路線如何設置。默認情況下,不需要指定'id',但是如果你的參數名是'ParentTableID',那麼你需要指定它。 – Ric

+0

是的 - 這就是模型活頁夾的工作原理。您的參數名稱必須與操作方法所期望的內容匹配。如果您在post方法中傳回整個視圖模型,則每個屬性都必須匹配一個名稱,否則該值不會被綁定到該參數/屬性。 – Tommy