2012-06-15 69 views
0

我修復bug的一些應用程序,我需要幫助理解下面的代碼行:有人可以解釋這些代碼行嗎?

這裏, 查看:

@Html.RenderControlText("WFD_CONSENT") 

控制器:

public static MvcHtmlString RenderControlText(this HtmlHelper htmlHelper, string controlType) 
     { 
      return htmlHelper.Action("ControlText", new { controlType = controlType }); 
     } 

參數controlType = "WFD_CONSENT"這裏。 我不能得到什麼功能htmlhelper.Action()在這裏做。 從邏輯上講,這個函數RenderControlText()應該從某處獲取一些數據,但看起來不像它。我在這裏陷入死衚衕。 這種方法RenderControlText()應該獲取我保存在某處的一些文本,並顯示它。

編輯:Action()方法有以下參數:action-name和object routevalues? 第二部分是什麼:new { controlType = controlType }?這條路線值是什麼?

回答

0

我無法得到htmlhelper.Action()函數在此處執行的操作。

看看Phil Haack的following blog post,他詳細解釋了孩子的動作。

Html.Action幫手基本上執行子動作。子動作是一個標準的控制器動作,除了它可以與主請求的執行並行呈現。

Html.Action("SomeAction", "SomeController")意味着將在SomeController上執行SomeAction,並將此操作的執行結果呈現給輸出。

相反:Html.Action("SomePartial")表示SomePartial將直接呈現給輸出,而不執行任何子控制器和操作。

但是在這兩種情況下,所有處理都發生在單個客戶端請求中。只是您有執行並呈現視圖的主控制器操作,並且在此視圖中,您使用Html.Action幫助器實例化子控制器和操作(可以返回例如部分視圖)以及執行結果這個視圖直接插入到輸出中。

+0

這裏這個重載用於Html.Action: Html.Action(string actionname,object RouteValues)。什麼是Routevalues? –

+1

它允許您將參數傳遞給子動作。例如,如果你的子動作是這樣定義的:'public ActionResult ControlText(string controlType){...}'你可以像這樣傳遞'controlType'參數:'htmlHelper.Action(「ControlText」,new {controlType = controlType })'。 –

+0

這一個評論幫助了很多! –

相關問題