问题标签 [asp.net-mvc-viewmodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - 如何将 DTO 转换为 View Model 然后再转换回来?
我也将 MVC 4 与存储库模式和单元测试一起使用。我有一个具有简单 CRUD 功能的典型控制器。我已将我的视图模型与我的 DTO 分开,我想知道在两者之间进行转换的最佳方法:
楷模:
我有Admin.Models.Product
哪个是我的视图模型,AdminAssembly.Models.Product
哪个是我的 DTO。
控制器:
如何在 2 之间转换?
我是否在我的视图模型中引用我的 DTO 程序集并执行以下操作:(这不会破坏我的单元测试吗?)
我需要某种对象转换黑匣子吗?
某种界面?
或者是其他东西?
更新1:
asp.net-mvc-3 - MVC 视图模型冗余
创建 ViewModel 不会导致冗余吗?从某种意义上说,我有我的域模型,我需要在视图上显示来自它的数据。所以我们创建 ViewModels,添加 DataAnnotations 并将其显示在 View 上。此时我有 2 个具有几乎相同数据的对象。
asp.net-mvc - 带有 asp.net mvc 4 和 EntityFramework 的 ViewModel 有什么意义
我正在和自己争论在使用实体框架的项目中创建 ViewModel 类有什么意义?
我目前有一个使用 EntityFramework 的项目。我的解决方案的结构基本上是这样的:
- UI 项目(包含控制器和视图)
- 模型项目(包含 EntityFramework 模型)
- 服务项目(包含与模型项目对话以将模型项目中的实体提供给 UI 项目的服务类)
我的控制器将 Entity Framework 创建的实体直接传递给视图。
它既好又简单。
在过去,我会创建单独的视图模型类并从 EntityFramework 创建的实体映射到这些视图模型。但现在我很难明白这一点。
我目前正在帮助一个项目,该项目从实体框架生成的实体映射到视图模型。它实际上使用AutoMapper来执行此操作。
现在,这一切似乎都是付出了很多努力和代码,却收获甚微。
我在这里错过了什么吗?
asp.net-mvc - 如何仅更新视图模型中已更改的原始(DB)对象的属性?
例如,我在我的和类上有一个DateCreated
属性。然而,在我的编辑视图中,我没有输入或任何类型的存储。当我使用 2013/03/17 编辑产品时,发回的产品始终是“0001/01/01”。除非我在编辑视图中为每个未使用的字段添加隐藏输入,否则我将永远丢失此信息。Product
ProductDetailModel
DateCreated
DateCreateded
DateCreated
ProductDetailModel
有什么方法可以告诉哪些属性ProductDetailModel
实际上是签名值,或者只是默认值,因为它们不存在表单元素?
我是否必须编写自己的模型绑定器,在视图模型中维护更新字段的列表,以便我只能在保存之前将这些值分配回原始对象?
asp.net-mvc - 重用具有视图模型属性的 DisplayAttributes
有没有办法DisplayAttribute
在视图模型中使用实体的值?
我无法从视图模型访问资源。
asp.net-mvc-3 - MVC3—麻烦绑定复杂模型
我需要用地址的IList更新公司类。这些是我的数据模型。
我将数据从 Entity 类打包到控制器的 GET 操作中的 Viewmodel 中,并且我将 Viewmodel 中的数据解包回控制器的 POST 操作中的 Entity 类。
这是我的视图模型。
我正在使用局部视图来显示每个地址框。对于 AddressRequests 中的每个AddressRequest,我将对象传递给具有正确设置前缀的局部视图。
我需要能够添加“添加新地址”按钮,以便用户可以将新地址添加到此列表中。这必须在不刷新页面的情况下完成。当用户单击该按钮时,会出现另一个地址框(我猜是相同的部分)。然后用户编辑该框并按下“保存”按钮。这个保存按钮应该保存整个公司数据,而不仅仅是地址。
有没有办法做到这一点?任何帮助是极大的赞赏!
asp.net-mvc - 为什么我应该使用 ViewModel 后缀而不是 VM?
这可能是一个愚蠢的问题,但......
我看到标准约定是使用“ViewModel”后缀。
我可以使用 VM 后缀吗?
为什么后缀这么长?
asp.net-mvc-4 - View(PartialView)返回的ViewModel为空
请帮助我理解为什么我的视图模型被视图返回为空。我试图在谷歌中找到解决方案,但绝大多数建议是添加隐藏。但对我来说,添加 Html.HiddenFor 不起作用
这是我的代码
视图模型
控制器
看法
部分视图
提前谢谢。
UPD 生成的 HTML 看起来像这样
c# - ViewModel 属性上的装饰以使用不同的名称进行绑定
在 MVC3 上,有没有办法装饰 ViewModel 属性以便DefaultModelBinder
在请求中为其使用不同的名称?
例如,假设您有以下视图模型:
但是传入的参数是来自外部源(例如某些第三方组件)的Dir 。
我知道自定义模型绑定器可以处理这个问题,但我认为必须有一种方法来装饰属性,类似于动作参数可以Bind(Prefix="...")
用来定义该映射的方式。
c# - MVC 中 ViewModel 构建器的接口
我一直在努力下定决心如何在我的 MVC 解决方案中处理 ViewModel。我认为,在阅读了不同的帖子和博客之后,最好的方法是让构建器实现接口,然后将它们注入控制器本身。
使用自动映射器,我将在每个构建器的实现中进行实体和视图模型之间的映射,并且控制器将保持非常薄。
所以我创建了这个界面
目前我忽略了关于使它们成为协变和逆变的警告(不知道是否需要这样做)。
对于特定的 ViewModel,虽然我需要从两个不同的服务中获取两个实体,所以我不知道应该传递什么类型的参数。
也许那个界面不正确?
我知道合并控制器中获取的两个实体不是一个干净的解决方案,对吧?
如果有人可以帮我一把,我将非常感激