2014-12-03 2 views
0

전역 함수를 정의 할 수있는 방법을 찾고 있으므로 여러 뷰에서 구현을 공유 할 수 있습니다.MVC 5의 전역 함수

내가 어디에 놓을 까? _viewStart.cshtml과 /Share/_Layout.cshtml을 시도했지만 작동하지 않는 것 같습니다.

HtmlHelper 클래스의 확장 프로그램을 만들고 싶지 않습니다. 제 경우에는 확장 기능이 작동하지 않습니다. 같은 기능을 여러보기에서 계속 복사하는 것을 싫어합니다.

@functions { 
    public static string GetColumnHeader(string columnName, string columnHeader, ISupportGridViewModel model) 
    { 
    return string.Format("{0} {1}", columnHeader, model.Sort == columnName ? model.SortDir == "ASC" ? "▲" : "▼" : string.Empty); 
    } 
} 

내가 확장 프로그램을 사용해야한다고 말한 사람들에게. 여기에 내가 그것을 작동시킬 수없는 예가있다. 내가 아는 한, 면도기 조수 장치는 확장 방법 이상의 것이고 작동하지 않을 것입니다. 여기

여기
var grid = new WebGrid(this.Model.Data); 
    grid.Pager(WebGridPagerModes.Numeric); 
    @grid.GetHtml(tableStyle: "table grid", 
        columns: grid.Columns(
        grid.Column(columnName: "Time", format: (item) => MethodDefinedInView(item.EndTime)) 
)) 

이 작동하지 않습니다 예입니다 노력하고 예 ...

var grid = new WebGrid(this.Model.Data); 
grid.Pager(WebGridPagerModes.Numeric); 
@grid.GetHtml(tableStyle: "table grid", 
       columns: grid.Columns(
       grid.Column(columnName: "Time", format: (item) => Html.ExtensionMethod(item.EndTime)) 

))

+0

확장 프로그램이 작동하지 않는 이유는 무엇입니까? 확장을위한 좋은 후보자처럼 보입니다. –

+0

_extensions가 작동하지 않는다고 생각하는 이유는 무엇입니까? –

+0

MVC webgrid를 사용하고 확장자를 (Func 형식)으로 전달하려는 경우 실패합니다. 여기서 확장 기능을 좋아하지 않습니다. 그래서 함수를 호출하여 문제를 해결할 수있는 유일한 방법입니다. – Sam

답변

2

단지에서 정적 메서드를 만드는 것입니다 유틸리티 클래스. 뷰 폴더의 Web.config에서 네임 스페이스에 대한 참조를 추가하거나 각 cshtml 파일의 맨 위에 추가하여 뷰에서 해당 뷰에 액세스 할 수 있습니다.