首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MVC计算字段

使用MVC计算字段
EN

Stack Overflow用户
提问于 2017-03-06 01:32:18
回答 1查看 326关注 0票数 0

我正试图完全接受MVC方法提供的关注点分离,但遇到了一些我希望得到建议的障碍。对于没有存储在DB后端中,但可以直接从DB后端派生的字段,您应该如何处理/应该将代码放在哪里?

例如,我可能有一个表示一个人的模型。存储的信息可能包括他们的出生日期。显然,我可以由此计算出他们的当前年龄,但不会将其存储在数据库中。现在,我希望在使用Lambda访问person对象(可能选择超过某个年龄的每个人)时,将年龄视为一个字段。但是,如果我将代码放入模型中,我不是在破坏关注点的分离吗?即使我把它放在那里,当通过get访问字段时,还是在创建对象时,应该计算它?那道布的变化呢?年龄应该立即反映新值,还是只在写回记录时反映?

为了便于讨论,让我们假设计算需要相当长的时间来处理,因此我们希望最小化它的使用。

我希望这个问题是有意义的!

EN

回答 1

Stack Overflow用户

发布于 2017-03-06 01:38:58

由于Age字段仅在某些视图上显示/需要,因此在相应的视图模型上具有此属性将是有意义的。您可以使用一个函数来获取Person实例并计算其年龄。因此,您的控制器可能如下所示:

代码语言:javascript
复制
public ActionResult Index(int id)
{
    Person person = GetFromDB(id);
    PersonViewModel viewModel = Map(person);
    return View(viewModel);
}

Map方法中:

代码语言:javascript
复制
public PersonViewModel Map(Person person)
{
    var result = new PersonViewModel();
    result.Age = GetAge(person.Dob);
    ... some other fields
    return result;
}

现在,Age属性将可用于相应的视图,并且无需重新计算即可多次访问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42611644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档