在 MVC3 应用程序的编辑操作方法中使用 AutoMapper

2024-05-25

这是我的控制器代码,它 100% 按照我的需要工作。但是 POST 方法没有使用 AutoMapper,这是不行的。如何在此操作方法中使用 AutoMapper?

我使用实体框架 4 和存储库模式来访问数据。

public ActionResult Edit(int id)
{
    Product product = _productRepository.FindProduct(id);
    var model = Mapper.Map<Product, ProductModel>(product);
    return View(model);
}

[HttpPost]
public ActionResult Edit(ProductModel model)
{
    if (ModelState.IsValid)
    {
        Product product = _productRepository.FindProduct(model.ProductId);

        product.Name = model.Name;
        product.Description = model.Description;
        product.UnitPrice = model.UnitPrice;

        _productRepository.SaveChanges();

        return RedirectToAction("Index");
    }

    return View(model);
}

如果我使用 AutoMapper,实体框架引用就会丢失,并且数据不会保留到数据库中。

[HttpPost]
public ActionResult Edit(ProductModel model)
{
    if (ModelState.IsValid)
    {
        Product product = _productRepository.FindProduct(model.ProductId);
        product = Mapper.Map<ProductModel, Product>(model);

        _productRepository.SaveChanges();

        return RedirectToAction("Index");
    }

    return View(model);
}

我猜测这是导致 Mapper.Map 函数返回一个全新的 Product 对象,因此,没有保留对实体框架图的引用。您建议什么替代方案?


我认为你只是这样做

 Product product = _productRepository.FindProduct(model.ProductId);
 Mapper.Map(model, product);
 _productRepository.SaveChanges();

您可能还想首先检查您是否有一个非空产品,并且还允许该用户更改该产品......

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

在 MVC3 应用程序的编辑操作方法中使用 AutoMapper 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 按成员序列化

    我已经实现了template
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • Django 教程 - ImproperlyConfigured 异常(未安装 pytz)

    我目前正在 OSX 上使用 1 6 1 版和 2 7 5 版的 python 来完成官方 Django 教程 我正在研究第二部分 即管理界面 当我尝试访问 admin polls poll 时 收到以下错误报告 ImproperlyConf
  • getpaths() 多边形 谷歌地图 API

    我正在尝试检索折线和多边形的纬度坐标 完成任一对象的绘制后 我想将经纬度存储在数据库中 但现在我只是尝试在文本区域中显示经纬度 我已经很容易地完成了标记 矩形和圆形的操作 但是折线和多边形的术语让我感到困惑 当我完成绘图时 我使用 addD
  • 如果元素 id 与搜索参数匹配,如何从 std::vector 中删除元素

    我正在尝试编写一种算法 如果项目 ID 与参数匹配 该算法将搜索项目向量并从项目向量中删除项目 请参阅下面的示例代码 struct item item int newID id newID bool operator const item
  • 如何关闭某些 .py 文件的 Pydev 缩进警告

    我的项目中有一些来自外部源的文件 我从不编辑这些文件 但有时会逐步执行 这些文件使用与我的默认缩进样式不同的缩进样式 2 个空格与 4 个空格 并且我目前对它们发出了许多缩进警告 是否有一种简单的方法可以逐个文件地抑制这些警告 或者指定缩进
  • 我怎样才能拦截从 Java 到 Groovy 的调用——或者轻松地模拟它

    我本来希望使用 groovy 的 invokeMethod 来做到这一点 但事实证明 当您从 Java 调用 Groovy 时 不会调用 invokeMethod 但否则它会完美地工作 我有一个案例 我将 Groovy 类提交给 Java
  • 仅忽略 JSF 中的无效查询参数

    我在用f viewparam捕获 JSF 页面的 GET 请求参数
  • 是否可以自定义区域形状?核心位置

    例如 至少我想要一个正方形 矩形 道路的形状作为我的区域 不它不是 根据文档 目前唯一的区域类是 CLCircularRegion 显然是圆形 和 CLBeaconRegion 基于与 iBeacon 的接近度 未来苹果可能会添加对自定义形
  • 解析没有标记名的 xml

    我有一个 xml 文件
  • 在maven项目之间共享测试资源

    有一个明确的解决方案可以使用以下命令在 Maven 项目之间共享公共测试代码test jar的目标maven jar plugin插件 参见here https stackoverflow com questions 174560 shar
  • 以编程方式缩放 UIWebView,无需手势 - 中心点计算不正确

    问题 我的 iPad 应用程序中有一个 UIWebView 我需要以编程方式缩放它 但不使用手势 点击 该应用程序 有一个 和一个 按钮 用于以用户定义的增量放大和缩小 这是一个针对视障人士的应用程序 以前 当我的应用程序运行时 此 缩放按
  • 将 UTC 日期转换为 PHP 本地时间

    我使用以下方法将 UTC 日期存储到数据库中 utc gmdate M d Y h i s A 然后我想将保存的 UTC 日期转换为客户端的本地时间 我怎样才能做到这一点 Thanks 如果客户端指的是浏览器 那么您首先需要从浏览器将时区名
  • 在 Jenkins 管道脚本中找不到文件

    我正在尝试让当前在 Jenkins master 上运行的管道脚本在远程 Jenkins 节点上执行 但我有一个奇怪的现象FileNotFound例外 我能够重现该问题的最基本版本的管道是这样的 node remoteNode env SE
  • WiX 属性引用另一个属性

    我正在尝试为我的应用程序创建多个快捷方式 通过使用在命令行上传递不同的参数Arguments的属性Shortcut http wix sourceforge net manual wix2 wix xsd shortcut htm元素 我希
  • 如何在 Jetty 中配置 webapps 部署目录

    这一定是一个非常简单的答案 但我似乎找不到 我刚刚开始使用码头7 0 2 on CentOS 5 5并部署了一个webapp使用默认设置 只需将我的 WAR 文件放入 webapps目录 当 Jetty 启动时 它将战争提取到 tmp je
  • 是否可以向 Google Home 设备发送语音通知

    当我们收到一些特定事件但不确定是否支持 可能时 我们希望通过我们的服务向 Google Home 设备发送语音通知 例如 当厨师快准备好时 我们会通知用户 如下所示 嘿 安德 你的饭菜将在 5 分钟内准备好 别忘了把它拿出来 有一些脚本声称
  • 检查包含 URL 的字符串“http://”

    我正在尝试检查用户输入的 URL 但我正在与一些错误和警告作斗争 BOOL textFieldShouldReturn UITextField textField check http NSString check textField te
  • 引起原因:java.lang.NumberFormatException:无效的双精度:“”带有空白值

    当我遇到错误时JSON字符串有一些空白值 从服务器获取 如何处理空白值 这是 JSON status success data id 1 name ABC address ABC QWE lat 16 799999 lng 96 15000
  • 使用 YouTube API 检查视频是否可嵌入

    我试图弄清楚 YouTube 视频是否可以使用 YouTube Data API v3 嵌入 从类似问题的答案中我注意到视频的 status embeddable 属性 对于这样的请求 https www googleapis com yo
  • 如何使用 JavaScript 隐藏滚动条

    怎样才能隐藏滚动条呢 我想这样做是因为滚动条不太好 overflow hidden没有用 因为我的 div 元素还有许多其他元素 所以设置overflow不能解决我的问题 你可以用这个隐藏滚动条 document body style ov
  • 在 MVC3 应用程序的编辑操作方法中使用 AutoMapper

    这是我的控制器代码 它 100 按照我的需要工作 但是 POST 方法没有使用 AutoMapper 这是不行的 如何在此操作方法中使用 AutoMapper 我使用实体框架 4 和存储库模式来访问数据 public ActionResul