【发布时间】:2013-10-15 20:20:17
【问题描述】:
给定以下字符串扩展方法
namespace JHS.ExtensionMethods
{
public static class StringExtensions
{
public static string ToUSAPhone(this String str)
{
return String.Format("{0:(###) ###-####}", Double.Parse(str));
}
}
}
在 MVC4 Razor 视图中添加了 @using 语句
@using JHS.ExtensionMethods;
下面的字符串值调用扩展方法
@Model.producer.phone.ToUSAPhone()
导致以下错误
'string' does not contain a definition for 'ToUSAPhone'
我也尝试将命名空间放在 /Views 文件夹的 web.config 中并收到相同的错误。
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="JHS.ExtensionMethods"/>
</namespaces>
</pages>
我已通过将相同的调用放入 C# 类中验证了扩展方法的工作原理
string test=producer.phone.ToUSAPhone();
在 MVC4 Razor 视图中似乎没有对扩展方法的引用,但我不知道为什么?
【问题讨论】:
-
你能显示更多的视图代码吗?您可能有一些语法错误。您还确定
phone是string类型而不是null? -
旁注:将一个定义为整数的数字解析为
double只是疯狂... -
旁注:
@usingclausule 后面不需要分号。 -
你为什么要把输入字符串解析为双精度,只是为了将双精度转换回返回的字符串?
-
您是否尝试过关闭并重新打开您的视图?有时 IntelliSense 的行为很奇怪。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor