如何重用.cshtml文件中定义的mvc asp.net函数?

Ele*_*ski 0 c# asp.net-mvc code-reuse razor

我还是MVC的新手,我正在试图弄清楚如何创建在.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" ) )
        ) );
    } );
Run Code Online (Sandbox Code Playgroud)

在它中调用"GeneratePopup",它在.cshtml文件中定义为:

@functions {
    private string GeneratePopup(string aTitle , string aString , string aID , bool aShow , int aWidth , string aSuffix ) {
Run Code Online (Sandbox Code Playgroud)

效果很好.除此之外,其中有许多功能我想以其他形式重用,我不想在整个地方复制GeneratePopup.

如何创建GeneratePopup的中央可重用版本?

SLa*_*aks 6

您应该将帮助程序移动到App_Code目录中的单独CSHTML文件.
然后,您可以从任何视图将其称为静态方法.

请参阅此博客文章,以及我的深入解释.