错误使用MVC @helper?

时间:2014-10-21 06:53:09

标签: asp.net-mvc-5

我做了一个帮助我帮助调试我的应用程序的帮助。

首先显示标题。 然后它尝试运行一个代码块,返回一些参数(对象数组)。 这些参数以字符串格式使用,在块运行正常时显示。 如果该块导致异常,则会显示异常。

问题是,当我调用帮助器时,根本没有显示任何内容(我对该功能很新)。

怎么了?

@{
    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>

1 个答案:

答案 0 :(得分:2)

问题不在于辅助方法本身,而在于执行。

执行时如下:

@{
    TryMethod(...);
}

代码已执行,但它是代码块但未写入输出。 请改用此语法:

@(TryMethod(...))

这应该有效。