如何在 ASP.NET MVC 中将复杂的 ViewModel 传递到服务层?

发布于 2024-10-18 08:17:00 字数 625 浏览 6 评论 0原文

假设我有用于用户注册的 RegisterModel 和一些实现 IUserService 的 UserService

public interface IUserService
{
   User CreateUser(User newUser);
}


[HttpPost]
public ActionResult Register(RegisterModel model)
{
            if (ModelState.IsValid)
            {

                // ... logic for newuser

                User user = _userService.CreateUser(newuser);

               _authenticationService.SetAuthenticatedUser(user);

                return RedirectToRoute("Homepage");
            }

            return View(model);
        }

考虑到 RegisterModel 可能非常复杂,将 RegisterModel 映射到 User 对象的逻辑应该在哪里

Say I have RegisterModel for user registration and some UserService that implementing IUserService

public interface IUserService
{
   User CreateUser(User newUser);
}


[HttpPost]
public ActionResult Register(RegisterModel model)
{
            if (ModelState.IsValid)
            {

                // ... logic for newuser

                User user = _userService.CreateUser(newuser);

               _authenticationService.SetAuthenticatedUser(user);

                return RedirectToRoute("Homepage");
            }

            return View(model);
        }

Given that RegisterModel might be very complex, where is the logic should go for mapping RegisterModel to User object

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薄暮涼年 2024-10-25 08:17:00

您永远不会将视图模型传递给服务。服务甚至不知道您可能在 GUI (ASP.NET MVC) 层中定义的视图模型的存在。服务与域模型一起使用。就我个人而言,我使用 AutoMapper 在视图模型和模型之间进行映射,反之亦然,因此此逻辑进入映射层。

You never pass a view model to a service. A service doesn't even know about the existence of a view model that you might have defined in your GUI (ASP.NET MVC) tier. A service works with domain models. Personally I use AutoMapper to map between view models and models and vice versa, so this logic goes into the mapping layer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文