2014-10-21 2 views
0

Я сделал помощник, который призван помочь мне отладить мое приложение.Неверное использование MVC @helper?

Вначале отображается заголовок. Затем он пытается запустить блок кода, который возвращает несколько аргументов (массив объектов). Эти аргументы используются в строковом формате, который отображается, когда блок работает нормально. Если блок вызвал исключение, отображается исключение.

Проблема в том, что ничего не отображается, когда я вызываю помощника (я очень новичок в этой функции).

Что случилось?

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

@using MygLogWeb.Classes.Fox 

<span>test</span> 

@helper TryMethod(
    string header 
    , Func<object[]> act 
    , string successFormat 
) 
{ 
    @Html.Raw(String.Format(
     @"<h2>{0}</h2>" 
     , HttpUtility.HtmlEncode(header) 
    )); 

    try 
    { 
     var args = act(); 

     if (successFormat == null) 
     { 
      @Html.Raw(@"<span class='Success'>OK</span>"); 
     } 
     else 
     { 
      @Html.Raw(String.Format(
       @"<span class='Success'>{0}</span>" 
       , HttpUtility.HtmlEncode(String.Format(
        successFormat 
        , args 
       )) 
      )); 
     } 
    } 
    catch (Exception exe) 
    { 
     @Html.Raw(String.Format(
      @"<span class='Error'>{0}</span>" 
      , HttpUtility.HtmlEncode(exe.Message) 
     )); 
    } 
} 

<span>test</span> 

@{ 
    TryMethod(
     "Cust.Columns" 
     ,() => { 
      return new object[] 
      { 
       Cust.Columns.Count 
      }; 
     } 
     , "Count: {0}" 
    ); 
} 

<span>test</span> 

ответ

2

Проблема не в самом методе помощника, а в выполнении.

При выполнении так:

@{ 
    TryMethod(...); 
} 

код выполняется, но это блок кода, но не записывается на выход. Используйте этот синтаксис вместо:

@(TryMethod(...)) 

это должно работать.