2010-06-30 455 views
39

我一直在使用Html.Action("ActionName", "ControllerName")跨控制器調用子操作,而不需要在Views \ Shared中顯示視圖。這對於顯示會話或cookie信息等內容非常有用。如何在ASP.NET MVC中使用Html.Action()將參數傳遞給Action?

我不想僅僅訪問cookie,我想將其他參數傳遞給Html.Action("ActionName", "ControllerName"),以便操作可以根據傳遞給原始視圖的數據執行不同的代碼。

我是否應該使用不同的方法將參數傳遞給不同控制器中的子操作?如何做到這一點?

回答

84

您可以像這樣在RouteValues屬性中指定其他數據。

Html.Action("Controller","Name", new { id = 1 }) 
+2

胡甜!我在intelisense中看到了RouteValues,但我沒有使用這種格式。我試過'Html.Action(「Action」,「Controller」,model.Paramter)''。我馬上試試這個。 – quakkels 2010-06-30 15:05:31

+0

如何傳遞字符串,如文本或自動填充的下拉列表項的ID? – antman1p 2015-02-24 16:20:33

+1

@ antman1p這聽起來像是一個新問題,而不是評論。在這裏發佈一個鏈接到新的問題,我會盡可能幫助。有一件事,它聽起來像你想要做的事情發生在客戶端,因爲它取決於與用戶(瀏覽器)的交互,而這個問題特別指的是如何獲取包含參數的操作的鏈接在服務器端的視圖上呈現。 – 2015-02-24 18:22:40

-1

要添加對這個問題一點,我使用ASP.Net MVC 5,我能成功使用此代碼來實現這一點:

@Html.Action("foo",new {parameter1=1}) 
+2

這是一個重載同樣的方法。在那個超載中,假定你正在調用用於渲染當前視圖的同一個控制器,並且動作是「foo」。有幾個其他超負荷值得一提: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.childactionextensions.action%28v=vs.118%29.aspx – 2015-03-04 20:22:53

相關問題