加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 模型本身应该进行一些计算吗?

发布时间:2020-12-16 07:26:12 所属栏目:asp.Net 来源:网络整理
导读:我已经学习了 ASP.NET MVC几个月.我已经了解了视图和控制器以及模型和内容.要设计视图,我们总是需要一个模型. 通常,模型只是一个我们用数据填充并传递给视图的类.我在这里有一个问题:一个模型本身应该做一些计算,还是应该只是愚蠢? 例如,我有一个网站,我按
我已经学习了 ASP.NET MVC几个月.我已经了解了视图和控制器以及模型和内容.要设计视图,我们总是需要一个模型.
通常,模型只是一个我们用数据填充并传递给视图的类.我在这里有一个问题:一个模型本身应该做一些计算,还是应该只是愚蠢?

例如,我有一个网站,我按用户加载图书.我的模型类如下:

public class FormViewModel
{
  public User MyUser {get; set;}
  public Books UserBooks {get; set;}

  //Constructor here. 
  public FormViewModel(User _user,Books _userBooks)
  {
    this.MyUser=_user;
    this.UserBooks=_userBooks;
  }
}

这个类没有做任何事情 – 它只是一个模板.现在,如果我修改代码如下:

public class FormViewModel
{
  public User MyUser {get; set;}
  public Books UserBooks {get; set;}

  //Constructor here. 
  public FormViewModel(User _user)
  {
    this.MyUser=_user;
    this.UserBooks=_user.GetBooks();
  }
}

收集哪些书籍取决于选择了哪个用户.现在,它更容易使用.

我只是想知道根据MVC模式和实践,什么是一个好方法.

解决方法

您可以通过几种方式实现,但我想说最简单的方法是将您尝试访问的用户的引用标识符传递给控制器??操作(如下所示)并让它执行所有数据访问电话.

public void GetUserAndDetails(Guid userId) { ... }

然后,在此控制器操作中,您可以查找此用户的用户详细信息和书籍,在视图模型实例上设置属性并将其返回到要访问的视图.

FormViewModel model = new FormViewModel();
model.MyUser = GetUser(userId);
model.UserBooks = GetUserBooks(userId);
return View(model);

这种方式视图仍然是愚蠢的(应该是这样)并且模型相对简单.这也有助于测试目的.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读