【发布时间】:2012-02-15 20:47:15
【问题描述】:
我是 ASP.NET MVC 和扩展方法的新手。
我创建了两个想要在视图中使用的扩展:
public static class Extensions
{
public static string ToYesNo(this bool value)
{
return value ? "Yes" : "No";
}
public static string MonthToString(this int value)
{
return (value >= 1 && value <= 12) ? CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(value) : "";
}
}
我可以在视图中将 ToYesNo 与布尔值一起使用,但我无法使用整数查看 MonthToString。我明白了:
'int' does not contain a definition for 'MonthToString'
扩展位于名为 BitvaerkAdmin.Models 的命名空间中,我在 cshtml 文件中引用了它。
为什么我不能使用我的整数扩展?
编辑:
我在我的视图中引用扩展是这样的:
@using BitvaerkAdmin.Models
<h3>
@ViewBag.Month.MonthToString()
</h3>
@foreach (Order order in ViewBag.Orders)
{
<td>
@order.Valid.ToYesNo()
</td>
}
【问题讨论】:
-
您能告诉我们您是如何尝试在视图中调用扩展方法的吗?
-
你确实重新编译了项目,对吧? :)
-
@alexn,这是一个很好的观点。我认为您成功了 :-) 这是我现在能想到的唯一可能的解释,而且是有道理的。 +1。
-
我添加了一行关于命名空间的内容。但由于 bool 扩展有效,这似乎不是问题。
-
好的,你现在可以给我们看一下调用代码吗?请在 Razor 视图中使用布尔值和整数。这一切都有些奇怪,因为它应该起作用。我怀疑你没有显示一些重要的细节。您能否提供一个完整的示例,以便我们重现您的问题?
标签: c# asp.net-mvc razor integer