2010-08-19 87 views
0

我需要一些幫助來創建這種擴展方法。HtmlHelper網格控件的擴展方法

我的觀點從

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/NoSideMenu.Master" 
Inherits="System.Web.Mvc.ViewPage<List<MyProject.Models.Customer>>" %> 

繼承和我有

<% Html.Telerik().Grid(Model) 
    .Name("customer-history-grid").Footer(false).Columns(columns => 
    { 
     columns.Bound(o => o.IsValidCustomer).Title(Html.Resource("ValidCustomerTableHeader")); 
    } 
    ).Pageable(pager => pager.PageSize(25)) 
    .Footer(true) 
    .Render(); 
    %> 

這裏定義網格控制,我不希望顯示的布爾值。相反,我想顯示YN。例如,如果o.IsValidCustomer爲真,則Y其他N

我試着寫了下面的擴展方法

public static string ConvertToString<T, TValue>(this HtmlHelper<T> helper, Expression<Func<T, TValue>> expression) 
    { 
     ...... 
    } 

但我的擴展方法拿起List<MyProject.Models.Customer>類型,而不是Customer對象。因此,我不能選擇,例如

在查看

lambda表達式的方法o.IsValidCustomer ...

columns.Bound(o => o.IsValidCustomer).Format(Html.ConvertToString(o => o.IsValidCustomer)).Title(Html.Resource("ValidCustomerTableHeader")); 

回答

1

是否可以編輯您的域模型?

E.g.加這個

public string IsValidCustomerString 
{ 
    get { return IsValidCustomer ? "Y" : "N"; } 
} 

然後只是將它綁定爲列?

HTHS,
查爾斯

+0

是的,我喜歡這樣。你的解決方案應該可以工作不過,我以另一種方式做到了。 Telerik的提供模板輔助所以我們可以調用HTML輔助方法如下 columns.Template(O => \t \t \t \t \t { \t \t \t \t \t \t%> \t \t \t \t \t \t \t <% = Html.ConvertBooleanToYOrN(o.MultipleCurrencyFlag)%> \t \t \t \t \t標題(Html.Resource(「MultipleCurrencyTableHeader」));標題(Html.Resource(「MultipleCurrencyTableHeader」)); HtmlAttributes(new {@class =「flag」})。 非常感謝,並感謝您的建議。 – Simon 2010-08-24 02:59:27

相關問題