2011-10-14 77 views
0

我創建了具有這樣特徵的的HtmlHelper:lambda表達式意思

public static MvcHtmlString PageLinks(this HtmlHelper html, 
    PagingInfo pagingInfo,Func<int, string> pageUrl) 

,我看到它傳遞這樣的:

@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page = x})) 

,但我不知道它是什麼意思?

x => Url.Action("List", new {page = x}) 

請提出這個lambda表達式

回答

1

嘛意思,這是一個lambda表達式這需要所謂x一個參數,並隱式類型是一個int,並調用字符串Url.Action有一個說法"List"匿名類型的另一個參數,它具有單個屬性page,參數值爲x

Url.Action返回的值用作lambda表達式的返回值。

這就是lambda表達式本身如何在語言構造方面被分解的方式。如果您問的是行爲的含義,那是另一回事 - 您需要查看自己的PageLinks方法以及Url.Action的文檔。

+1

只需補充一點,我認爲您將從閱讀代表中獲益,因爲Func 是一個接受int作爲輸入並返回字符串的委託。當涉及到生成你的頁面鏈接,你委託創建你的鏈接到Url.Action – 2011-10-14 16:34:56

+0

@jon什麼將是x的價值? – DotnetSparrow

1
x => Url.Action("List", new {page = x}) 

這是給予x一個(lambda)函數(我們知道x必須是整數,因爲簽名是Func<int, string>)返回一個URL(字符串)。 (在技術上它是一個lambda表達式,但不同的是在這種特殊情況下丟失)

你使用這樣的:string url = pageUrl(pageNumber);

Url.Action出具有int類型的單個參數(動作List的網址並且名字page可能)將被填充值爲x。該參數可能是必須返回的列表頁面。

@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page = x})) 

這將「返回」一個html字符串,並鏈接到我們之前計算的url。 (可能是一個<a href='url'></a>或類似的東西)啊...這是你的功能:-)

(我認爲你正在做的事情是這樣的:ASP.NET MVC Paging, Preserving Current Query Parameters與包含當前和總頁數的PagingInfo類,對吧?)

+0

究竟:)但我不知道這個過程。什麼叫第一。控制器,視圖還是幫手?請建議。謝謝。 – DotnetSparrow

+0

@DotnetSparrow(我希望我沒有犯錯誤......自從上次編程MVC以來的很多時間)假設您有頁MyPage(1)(其中(1)是傳遞給頁面的參數)。 MyPage(1)將需要到MyPage(2)的鏈接(例如,表格的下20行)。順序是:MyPage(1)的控制器(例如MyController)調用MyPage(1)的視圖。在MyPage(1)(html的組成)渲染器中,在助手被調用的行處呈現並調用它。助手創建一個鏈接MyPage(2)。頁面的其餘部分是「準備好的」(由html組成) – xanatos