【问题标题】:Help needed on ASP.NET MVC data processingASP.NET MVC 数据处理需要帮助
【发布时间】:2011-02-20 06:36:37
【问题描述】:

我正在使用 ASP.NET MVC 2 中的服务和存储库层开发一个 Web 项目。 我正在使用实体框架。

我有两个生成的 EF 类。即公司和用户。 公司有两个字段 CompanyID {int} 和 CompanyName {string}。 用户有三个字段UserID{int}、UserName{string}、BirthMonth{smallint,can be null}和CompanyID{int,这是Company的外键}

我有一个显示用户名、月份和公司名的视图。而且,同样的视图应该包括另一个模型,即 Messages (MessageTitle, RecievedDate, ReceivedFrom) 我想将 BirthMonths 视为月份名称(一月、二月等)

我被困在做空?将月份缩短并显示为名称(即一月、二月)而不是数字。

【问题讨论】:

    标签: asp.net-mvc service repository


    【解决方案1】:

    试试这个(我没有测试它,但在一些网络搜索中发现类似)。

    string month = String.Empty;
    if(BirthMonth.HasValue)
    {
      DateTime date = new DateTime(1,(int)BirthMonth.Value,1);
      month = date.ToString("MMMM");
    }
    else
    {
      // month = some default value here;
    }
    

    编辑添加: 转换短?具体来说:

    short myShort = BirthMonth.HasValue ? BirthMonth.Value : 0;
    

    【讨论】:

    • 把这些约定放在哪里?在存储库功能还是在服务层?我认为它们应该在服务层,因为它们在业务逻辑中。但是如果我把它们放在服务层,那么我将不得不声明两个不同的模型,并遍历一个集合,进行连接并获得预期的集合。
    • 也许在单独的程序集中创建一个 Extension 方法,然后在其中引用它。msdn.microsoft.com/en-us/library/bb383977.aspx
    【解决方案2】:

    短?简而言之,可以使用 GetValueOrDefault();要获取不可为空的表单并获取月份名称,请编写一个快速转换器将数字转换为月份名称... DateTime.ToString 中可能有一些东西也可以提供给您。

    【讨论】:

    • 把这些约定放在哪里?在存储库功能还是在服务层?我认为它们应该在服务层,因为它们在业务逻辑中。但是如果我把它们放在服务层,那么我将不得不声明两个不同的模型,并遍历一个集合,进行连接并获得预期的集合。
    • 把它们放在你所有项目共享的共享库中,因为我们讨论的是较低级别的辅助方法,而不是企业范围的功能。你可以去扩展方法路线,或者根据你的需要创建一个静态类。此外,这些可能会超出业务范围;它们可能适用于您的业务对象,但在某种程度上它们也会在表示层中有所帮助。其中一些实际上看起来更像是表示层类型的问题。
    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 2010-09-13
    • 1970-01-01
    相关资源
    最近更新 更多