Tag: viewmodel

WPF:如何从ViewModel发送一个事件信号到代码隐藏没有代码视图?

我有相当简单的(我希望:))问题: 在MVVM中,View通常监听ViewModel属性的变化。 不过,我有时候喜欢听事件,例如,View可以在VM信号时开始animation,或者closures窗口。 通过使用NotifyPropertyChanged的bool属性来做到这一点(只有当它从false更改为true时才开始animation)是可能的,但感觉像是一个黑客攻击,我更喜欢暴露事件,因为它在语义上是正确的。 此外,我想这样做没有代码在代码隐藏,因为做viewModel.myEvent += handler将意味着我会手动取消注册该事件,以便允许查看GC'D – WPF视图已经能听'属性'弱',我更喜欢编程只声明在视图。 标准的强大的事件订阅也是不好的,因为我需要切换多个视图模型为一个视图(因为每次创build视图需要太多的CPU时间)。 谢谢你的想法(如果有一个标准的解决scheme,一个链接到MSDN就足够了)!

我是否需要两种方式创buildautomapper createmap?

这可能是一个愚蠢的问题! (n00b到AutoMapper和时间短!) 我想使用AutoMapper从EF4实体映射到ViewModel类。 1)如果我打电话 CreateMap<ModelClass, ViewModelClass>() 那么我也需要打电话 CreateMap<ViewModelClass, ModelClass>() 执行反向? 2)如果两个类具有相同的属性名称,那么我是否需要一个CreateMap语句,或者这只是“特定/自定义”映射?

MVVM和VM的集合

一个常见的senario:一个包含一系列项目模型的模型。 比如有一群人的房子。 如何正确地为MVVM构造 – 特别是关于使用添加和删除来更新Model和ViewModel集合? Model House包含模型People (通常是List<People> )的集合。 查看模型HouseVM包含它封装的House对象和视图模型PeopleVM ( ObservableCollection<PeopleVM> )的ObservableCollection<PeopleVM> 。 请注意,我们最后在HouseVM中持有两个集合(需要同步): 1. HouseVM.House.List<People> 2. HouseVM.ObservableCollection<PeopleVM> 当House更新为新的People(add)或People leave(remove)时,现在必须在两个集合中处理Model House People集合和 VM HouseVM PeopleVM ObservableCollection。 这个结构是否正确的MVVM? 是否有避免必须执行添加和删除的双重更新?

ASP.NET MVC – 数据库实体或ViewModels?

我目前正在研究一个ASP.NET MVC项目。 团队中的一些开发人员希望将自动生成的数据库实体直接绑定到视图。 其他开发人员希望创build量身定制的ViewModel并将其绑定到视图。 客观地说,这两种方法的优缺点是什么? (通过“数据库实体”我指的是ORM框架生成的自动生成的类,如LINQ to SQL,entity framework或LLBLGen)。

ASP.Net MVC和状态 – 如何保持请求之间的状态

作为一位刚刚开始使用MVC的相当有经验的ASP.Net开发人员,我发现自己正在努力将自己的思维从传统的“服务器控制和事件处理程序”方式转变为更加dynamic的MVC方式。 我想我正在慢慢到达那里,但是有时MVC“魔术”会把我抛弃。 我目前的scheme是创build一个网页,允许用户浏览本地文件,将其上传到服务器,并重复这一点,直到他有一个文件列表的工作。 当他对文件列表感到满意时(他将在页面上显示一个网格),他将点击一个button来处理这些文件并提取一些将被存储在数据库中的数据。 最后一部分不是那么重要,现在我正忙于build立一个文件列表,并在请求之间保存这个列表。 在传统的方法中,这将非常简单 – 数据将被保留在ViewState中。 但是在MVC中,我需要在控制器和视图之间传递数据,而我并不完全知道这应该如何工作。 我想我更好地发布我的编码这个不完整的尝试来解释这个问题。 为了保留我的文件列表数据,我创build了一个基本上是文件types列表的视图模型,以及一些额外的元数据: public class ImportDataViewModel { public ImportDataViewModel() { Files = new List<ImportDataFile>(); } public List<ImportDataFile> Files { get; set; } … 在视图中,我有一个浏览和上传文件的表单: <form action="AddImportFile" method="post" enctype="multipart/form-data"> <label for="file"> Filename:</label> <input type="file" name="file" id="file" /> <input type="submit" /> </form> 该视图使用视图模型作为其模型: @model MHP.ViewModels.ImportDataViewModel 这会将文件发送到我的操作: public ActionResult AddImportFile(HttpPostedFileBase […]

为什么从Razor View接收POST请求时,我会得到null而不是空string?

当没有值的时候,我曾经收到空string: [HttpPost] public ActionResult Add(string text) { // text is "" when there's no value provided by user } 但现在我正在通过一个模型 [HttpPost] public ActionResult Add(SomeModel Model) { // model.Text is null when there's no value provided by user } 所以我必须使用?? "" ?? ""运营商。 为什么发生这种情况?

DTO = ViewModel?

我使用NHibernate来坚持我的域对象。 为了保持简单,我使用ASP.NET MVC项目作为我的表示层和我的服务层。 我想从我的控制器类返回我的域对象的XML。 在阅读堆栈溢出的一些post后,我收集DTOs是要走的路。 不过,我也遇到过有关ViewModel的post。 我的问题是:数据传输对象和ViewModel是一样的东西? 或者是ViewModel是DTO的一种子模式?

如何在POST操作中将视图模型映射回域模型?

互联网上使用ViewModel和利用Automapper的每篇文章都给出了“Controller – > View”方向映射的指导原则。 您将域模型和所有select列表一起放入一个专门的ViewModel中,并将其传递给视图。 这很清楚,很好。 该视图有一个表单,最终我们在POST操作中。 在这里,所有的模型绑定器都与[明显]另一个 View模型一起出现,它至less在命名约定的部分中与原始ViewModel 明显相关,以便进行绑定和validation。 你如何将其映射到你的域模型? 让它成为插入动作,我们可以使用相同的Automapper。 但是,如果这是更新行为呢? 我们必须从Repository检索我们的Domain Entity,根据ViewModel中的值更新它的属性并保存到Repository中。 附录1(2010年2月9日):有时,分配模型的属性是不够的。 根据视图模型的值,应该对域模型采取一些行动。 也就是说,应该在域模型上调用一些方法。 可能应该有一种应用程序服务层,站在控制器和域之间来处理视图模型… 如何组织这个代码,并把它放在哪里来实现以下目标? 保持控制器很薄 尊重SoC的实践 遵循域驱动devise原则 是干的 未完待续 …

忽略使用Automapper映射一个属性

我正在使用Automapper,我有以下情况:类OrderModel有一个名为“ProductName”,不在数据库中的属性。 所以当我尝试使用以下方法进行映射时: Mapper.CreateMap<OrderModel, Orders>(); 它会产生一个exception: “Project.ViewModels.OrderModel上的以下1个属性未映射:”ProductName“ 我已经在AutoMapper的Wiki for Projections中读到了相反的情况(额外的属性是在目标上,而不是在实际上是我的情况下的源) 我如何避免automapper使这个属性的映射?

ASP.NET MVC模型vs ViewModel

好的,我一直在听MS关于ASP.NET MVC的“ViewModels”的讨论。 现在,这是打算成为一种特定的模型,是否正确? 不是一种特定types的视图。 据我了解,这是一种具有与View交互的特定目的的模型? 或类似的东西? 一些澄清将不胜感激。