[英]Passing Field Name to Razor @helper in Webmatrix pages C#
這段代碼獲取了一個唯一的組織名稱列表,以供顯示在我的.cshtml頁面中:
IEnumerable<dynamic> data = db.Query("Select * from provider
where submitter_element = '210300'");
//the 210300 could be any value passed to the query
var items = data.Select(i => new { i.org_name }).Distinct();
foreach(var name in items){
<text>@name.org_name<br></text>
data
中的記錄本身都是唯一的,但是每個字段中的數據包含相同的值,即多個提供程序具有相同的org_name。
我希望能夠多次重用data
以創建多個唯一列表。 我希望將其傳遞給@helper進行顯示。 為此,我有以下幾點:
@helper ListBoxDistinctDisplay(IEnumerable<dynamic> queryResult)
{
IEnumerable<dynamic> distinctItems = queryResult.Select(i => new { i.org_name }).Distinct();
foreach(var listItem in distinctItems){
<text>@listItem.org_name<br></text>
}
然后在我的.cshtml頁面中執行以下操作:
@DisplayHelpers.ListBoxDistinctDisplay(data)
...和BINGO,我在“查看”頁面上獲得了唯一列表。
效果很好,除非您看到我必須在幫助程序中指出.org_name。
我的問題是如何將字段名稱(org_name)傳遞給助手,以便無論字段名稱如何都可以重用我的助手?
或者...我完全不知道有完全不同的方法嗎?
謝謝!
由於您喜歡使用動態,因此我會堅持下去。 您可能要通過選擇器:
@helper ListBoxDistinctDisplay(IEnumerable<dynamic> queryResult, Func<dynamic, dynamic> selector)
{
IEnumerable<dynamic> distinctItems = queryResult.Select(x => new {selectedField = selector(x)}).Distinct();
foreach (var listItem in distinctItems)
{
<text>@listItem.selectedField<br/></text>
}
}
稱它為:
@DisplayHelpers.ListBoxDistinctDisplay(data, x => x.org_name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.