2013-11-27 3 views
0

Я все еще новичок в MVC, и я пытаюсь понять, как создавать функции, которые генерируются внутри файла .cshtml и перемещать их в центральное место, чтобы их можно было повторно использовать.Как повторно использовать функцию mvc asp.net, определенную в файле .cshtml?

Например, используя библиотеки DevExpress для создания гридов и всплывающих окон. Это определение столбца для сетки:

settings.Columns.Add(column => { 
     column.ColumnType = MVCxGridViewColumnType.TextBox; 
     column.Caption = "Samples"; 
     column.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; 
     column.CellStyle.HorizontalAlign = HorizontalAlign.Center; 
     column.SetDataItemTemplateContent(Content => ViewContext.Writer.Write(
      GeneratePopup("Samples" 
         , DataBinder.Eval(Content.DataItem , "SampleHTML").ToString() 
         , "Samp" + DataBinder.Eval(Content.DataItem , "Row").ToString() 
         , (bool)DataBinder.Eval(Content.DataItem , "ShowSample") , 750 , (string)DataBinder.Eval(Content.DataItem , "SampleCount")) 
     )); 
    }); 

В нем делает вызов «GeneratePopup», который определен в файле .cshtml как:

@functions { 
    private string GeneratePopup(string aTitle , string aString , string aID , bool aShow , int aWidth , string aSuffix) { 

Работает отлично. Кроме того, в нем есть множество функциональных возможностей, которые я хочу повторно использовать в других формах, я не хочу копировать GeneratePopup повсюду.

Как создать центральную многопользовательскую версию GeneratePopup?

+0

Создайте вместо этого Html Helper. – ataravati

ответ

5

Вы должны переместить помощника в отдельный файл CSHTML в каталоге App_Code.
Вы можете вызвать его как статический метод из любого вида.

См. this blog post и my in-depth explanation.

+0

круто, это именно то, что я искал. Благодарю. – Elenesski

Смежные вопросы