我做了一个帮助我帮助调试我的应用程序的帮助。
首先显示标题。 然后它尝试运行一个代码块,返回一些参数(对象数组)。 这些参数以字符串格式使用,在块运行正常时显示。 如果该块导致异常,则会显示异常。
问题是,当我调用帮助器时,根本没有显示任何内容(我对该功能很新)。
怎么了?
@{
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>
答案 0 :(得分:2)
问题不在于辅助方法本身,而在于执行。
执行时如下:
@{
TryMethod(...);
}
代码已执行,但它是代码块但未写入输出。 请改用此语法:
@(TryMethod(...))
这应该有效。