1

webgrid를 사용하여 레코드 목록을 표시합니다.MVC4 WebGrid의 항목 유형은 무엇입니까

내보기가 단단히 IEnumerable과 결합되어 있습니다.

저는 webgrid를 Model과 바인딩하고 있습니다.

var grid = new WebGrid(Model, rowsPerPage: 50); 

@helper 메서드를 사용하여 열을 포맷하려고합니다. @helper 메서드는 Models.SitesConfig.Configuration 형식의 매개 변수를 사용합니다.

뷰를로드하려고하면 잘못된 인수 오류가 발생합니다.

내 생각입니다.

@model IEnumerable<Models.SitesConfig.SiteConfiguration> 
@section Styles { 
    <link href="@Url.Content("~/Content/SatelliteSite.css")" rel="stylesheet" type="text/css" /> 
} 

@{ 
    ViewBag.Title = "List of Satellite Sites"; 
} 
@helper FormatTemplateColors(Models.SitesConfig.SiteConfiguration item) 
{ 
    @String.Format(
     "Border: {0} <br/>Link: {1} <br/>Text: {2}", 
     item.BorderColor != null ? item.BorderColor.Name : string.Empty, 
     item.LinkColor != null ? item.LinkColor.Name : string.Empty, 
     item.TextColor != null ? item.TextColor.Name : string.Empty) 
} 
@{ 
    var grid = new WebGrid(Model, rowsPerPage: 50); 
} 
<div> 
    @grid.GetHtml(columns: grid.Columns(
     grid.Column("Template", 
      style: "color-column-width", 
      format:(item) => @FormatTemplateColors(item) 
     ) 
     ) 
</div> 

누가이 문제에 대해 도움을 줄 수 있습니까? format 람다 item 파라미터에

+0

코드를 좀 더 쉽게 읽을 수 있도록 포맷 할 수 있습니까? – JTMon

+0

불필요한 코드가 제거되었습니다. – Naresh

답변

3

Value 재산권 실제 항목을 보유하고있다 (dynamic의 형태로) WebGridRow 클래스의 인스턴스이다.

format:(item) => @FormatTemplateColors(item.Value) 

(!) 참고를 당신이 Html.Raw 도우미를 사용할 필요가 출력 HTML에 wan't 경우 :

그래서 당신은 작성해야합니다. 따라서 도우미를 다음과 같이 수정하십시오.

@helper FormatTemplateColors(Models.SitesConfig.SiteConfiguration item) 
{ 
    @Html.Raw(String.Format(... 
} 
+0

감사합니다. 잘 작동합니다. – Naresh