【问题标题】:Compilation Error in my ASP.net app我的 ASP.net 应用程序中的编译错误
【发布时间】:2014-06-25 14:36:34
【问题描述】:

我在第 63 行遇到编译器错误:

<div class="dateAdded">Article submitted @article.DateAdded.ToRelativeDateStringUtc()</div>

编译器错误消息:CS1061:“System.DateTime”不包含 'ToRelativeDateStringUtc' 的定义并且没有扩展方法 'ToRelativeDateStringUtc' 接受类型的第一个参数 可以找到“System.DateTime”(您是否缺少 using 指令或 程序集参考?)

这是我的错误发生的地方。我的程序中包含一个包含ToRelativeDateStringUtc() 的类。这是我必须导入的MS 类吗?我没有看到它在 .net 参考列表中的任何地方列出。我确定它很简单,有人有什么想法吗?

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    您没有将参数传递给ToRelativeDateStringUtc 方法。

    this.应该看起来像:

    public static string ToRelativeDateStringUtc(this DateTime date)
    {
        return GetRelativeDateValue(date, DateTime.UtcNow);
    }
    private static string GetRelativeDateValue(DateTime date, DateTime comparedTo)
    {
        TimeSpan diff = comparedTo.Subtract(date);
        if (diff.TotalDays >= 365)
            return string.Concat("on ", date.ToString("MMMM d, yyyy"));
        if (diff.TotalDays >= 7)
            return string.Concat("on ", date.ToString("MMMM d"));
        else if (diff.TotalDays > 1)
            return string.Format("{0:N0} days ago", diff.TotalDays);
        else if (diff.TotalDays == 1)
            return "yesterday";
        else if (diff.TotalHours >= 2)
            return string.Format("{0:N0} hours ago", diff.TotalHours);
        else if (diff.TotalMinutes >= 60)
            return "more than an hour ago";
        else if (diff.TotalMinutes >= 5)
            return string.Format("{0:N0} minutes ago", diff.TotalMinutes);
        if (diff.TotalMinutes >= 1)
            return "a few minutes ago";
        else
            return "less than a minute ago";
    }
    

    更多细节

    http://dotnetslackers.com/articles/aspnet/5-Helpful-DateTime-Extension-Methods.aspx

    http://forums.asp.net/t/1880820.aspx?How+to+create+a+flipcart+like+panel+for+showing+products+in+gridview

    【讨论】:

    • -1 这不是扩展方法通常的工作方式。这段代码应该被称为myDateTimeInstance.ToRelativeDateStringUtc(),编译器会解析参数。
    • @SimonSvensson 我觉得你很聪明,你能解决我的问题吗? stackoverflow.com/questions/23386532/…
    【解决方案2】:

    您应该将所需的命名空间添加到您的 web.config。根据您是否使用剃须刀,有不同的部分。

    剃须刀

    <system.web.webPages.razor>
      <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
          <add namespace="System.Web.Mvc" />
          <add namespace="System.Web.Mvc.Ajax" />
          .
           .
          <!-- etc -->
        </namespaces>
      </pages>
    </system.web.webPages.razor>
    

    对于旧版本的 ASP.NET

    <pages>
      <namespaces>
        <add namespace="System.Web.Mvc"/>
        <add namespace="System.Web.Mvc.Ajax"/>
        <add namespace="System.Web.Mvc.Html"/>
        <add namespace="System.Web.Routing"/>
        <add namespace="System.Web.WebPages"/>
        <add namespace="System.Web.Helpers"/>
        <add namespace="MyCustomHelpers"/>
      </namespaces>
     </pages>
    

    最后,您可以在.cshtml 的顶部添加和@using

    【讨论】:

    • 我想你就在这里。我将命名空间添加到我的配置中。指向我的助手类。现在我在看这个: 第 68 行:编译器错误消息:CS1001: Identifier expected
    • 现在这个错误神奇地消失了。我以前的错误仍然存​​在
    • @Deadhat:您应该添加类似&lt;add namespace="project.HelperClasses"/&gt; 的内容。您添加了对文件的引用,而不是命名空间。
    • 我已经添加了 project.HelperClasses。哪个指向我的程序需要的文件,其中包含它所说的方法丢失,但是错误仍然存​​在。
    • 您可以添加您的 web.config 吗?这可能有助于解决您的问题。另外,您要创建什么样的页面?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2015-10-30
    • 2013-10-08
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多