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

2023-11-21

假设我有用于用户注册的 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 对象的逻辑应该在哪里


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 将 HTML 表单数据传递给 Javascript 函数

    我创建了一个表单 其中有一个下拉菜单可供选择 以及其他三个文本字段供用户输入数据 我需要对用户输入的数据进行计算 然后显示结果 现在 我只想能够将结果传递到函数中并打印结果 从那里我将弄清楚如何将这些输出显示到表格中 现在 我无法确定特定元
  • 为什么异步函数被调用两次?

    我正在使用线程计时器来做一些定期工作 private static async void TimerCallback object state if Interlocked CompareExchange ref currentlyRunn
  • jest.fn(implementationCallback) 和 jest.fn().mockImplementation(implementationCallback) 之间的区别

    我注意到当我们 jest fn 并将实现作为 fn 和 jest fn mockImplementation 中的参数传递时 我们得到了相同的行为 如果是这样 选择合适只是一个品味问题吗 Example jest fn num1 num2
  • jquery datepicker范围(mindate maxdate)不起作用

    我正在尝试为表单上的 jquery 日期选择器设置一个范围 但是当我打开表单时 它允许我选择任何日期
  • org.apache.solr.common.SolrException:缺少内容流

    我已经使用 Tomcat 和我的安装了 Apache Solr solr admin工作正常 但是当我尝试发出 solr update我收到以下错误 可能是什么原因 org apache solr common SolrException
  • 以编程方式访问 Google Chrome 历史记录

    我想在谷歌浏览器中索引所有用户操作和网站 我了解 google chrome 索引 sqlLite 数据库中的所有数据 我如何在我自己的应用程序中以编程方式访问 chrome 网络历史记录 您需要从以下位置下载适当的程序集SqLite 下载
  • chrome.runtime 是否支持使用可传输对象发布消息?

    我正在学习可转移对象 http updates html5rocks com 2011 12 Transferable Objects Lightning Fast 它们看起来非常棒 我想在我的扩展中使用它们来加速数据从 iframe 内部
  • Java 错误:EventDispatchThread.run() 行:不可用 [局部变量不可用]

    当我尝试在调试器中启动代码时 出现以下错误 EventDispatchThread run line not available local variables unavailable 代码非常大 我无法在这里发布 但无论如何这里有一些细节
  • 多次登录尝试后实施禁令的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 在我实施了自己的禁止过多尝试的系统后 过去两天我一直在研究这个问题 但我还没有找到我正在寻找的正确答案 这几乎是 实现这一点的最佳方法是什么 目前我是通过IP封禁的方式实现的 如果同
  • rllib 使用自定义注册环境

    Rllib 文档提供了一些有关如何创建和训练自定义环境 有一些有关注册该环境的信息 但我想它的工作方式需要与健身房登记 我正在与简单走廊环境 如果我将注册码添加到文件中 如下所示 from ray tune registry import
  • 为什么 UIButton 没有返回正确的约束?

    在我下面的代码中 我在垂直滚动视图中添加了 5 个按钮 每个按钮都限制为滚动视图的顶部 20 前缘 后缘及其高度 我创建了一个b1HeightConstraint多变的 它的作用是保持高度约束b1按钮 单击按钮 我试图消除此限制 然而我面临
  • 如何更改颠覆存储库的结构?

    我是 Subversion 的新手 所以我现在不知道这是不是一个愚蠢的问题 我继承了一个具有扁平结构的颠覆存储库 没有 trunk tags branches 顶层 我想重新构造它 使其遵循 trunk tags branches layo
  • 允许逗号和空格分隔的数字列表的正则表达式

    我想使用 javascript 或 jquery 编写正则表达式以允许 逗号分隔的数字列表 OR 空格分隔的数字 OR 逗号后跟空格分隔的数字 OR 上述任何一种的组合 任何非数字 空格或逗号的内容都必须被拒绝 应该通过 111 222 3
  • 如何将 pandas.core.series.Series 转换为列表?

    I tried print type numbers 2 numbers 2 tolist print type numbers 2 那是行不通的 我有
  • 需要可预测的随机生成器

    我是一名网页游戏开发人员 我遇到了随机数问题 假设一名玩家有 20 的几率用剑造成致命一击 这意味着 五分之一的点击应该是关键的 问题是我在现实生活中得到了非常糟糕的结果 有时玩家在 5 次命中中获得 3 次暴击 有时在 15 次命中中没有
  • 访问所有活动中的 GoogleApiClient 对象

    如果大多数人想要使用 Google Plus 登录他们的应用程序 这似乎是一件简单的事情 s 在活动 1 中 我让用户登录 登录后 我想让该用户对象全局可访问 因此我将其添加到 Application 对象中 public class Gl
  • 尝试使用 phusion Passenger 启动 Rails 应用程序时,US-ASCII 中的字节序列无效

    我正在尝试使用 Phusion Passenger 和 RVM 在 Ubuntu 生产服务器上部署 Rails 3 应用程序 我已成功安装 Phusion Passenger 但在浏览器上访问服务器时出现以下错误 Ruby Rack app
  • 当 mongodb 内存不足时会发生什么?

    例如 我的数据库有 20 GB 数据 只有 2 GB 内存 交换已关闭 我能够查找并插入数据吗 性能会有多差 最好用谷歌搜索一下 但许多消息来源表示 当您的工作集超出 RAM 大小时 性能将显着下降 分片可能是一个有趣的选择 而不是添加更多
  • 如何在C中链接多个实现文件

    我有多个 c文件 即实现文件说 main c A c B c 任何文件中的函数都可以调用不同文件中的任何函数 我的问题是 我需要 h即 A 和 B 的每个实现的头文件 其中每个头文件都有以下定义ALLA 或 B 中的函数 另外 main c
  • 如何在 ASP.NET MVC 中将复杂的 ViewModel 传递到服务层?

    假设我有用于用户注册的 RegisterModel 和一些实现 IUserService 的 UserService public interface IUserService User CreateUser User newUser Ht