草庐IT

ViewModel

全部标签

c# - Model 和 ViewModel 的验证最佳实践

我有单独的模型和View模型类。其中viewmodel类仅进行UI级别验证(引用:Validation:ModelorViewModel)。我可以在Controller中验证模型(vewmodel)是否有效。问:如何验证模型(带有数据注释的主要实体)。我没有使用模型对象开发View模型。只需复制属性并添加该特定View中可能需要的所有属性。//ModelClasspublicclassUser{[Required]publicstringEmail{get;set;}[Required]publicDateTimeCreated{get;set;}}//ViewModelClasspu

c# - 处理 ViewModel/Model 中的致命异常

我有一个使用M-V-VM方法编写的应用程序。数据访问在模型中完成。如果此处发生fatalerror(例如,与数据源的连接丢失),则抛出Exception。此异常冒泡到ViewModel。但是,因为数据访问的原始触发器是数据绑定(bind),WPF吞下了这个异常(它只在应用程序在调试器下运行时记录在输出窗口中)。我宁愿这个异常保持未处理状态,这样我的应用程序范围内的未处理异常处理程序就可以拾取它、记录它并优雅地退出。我怎样才能做到这一点? 最佳答案 您可以在调度程序上对异常抛出操作进行排队。//Thispropertyisconnec

c# - MVVM : Share data between ViewModels

如何在多个ViewModel之间共享数据?例如,应用程序中有一个名为Project的类。publicclassProject:ModelBase{privatestring_projectName;publicstringProjectName{get{return_projectName;}set{_projectName=value;RaisePropertyChanged(()=>ProjectName);}}}在多个ViewModels应用程序中应该访问ActiveProject。在ViewModel之间共享项目的最佳方式是什么?中介者模式?(消息)静态对象单例模式(如果是怎么

c# - 将 ViewModel 类放在 MVC 中的什么位置

我的问题很简单。我想知道在MVC应用程序中将我的ViewModels放在哪里。目前我正在处理的项目只有ViewModels,它们存储在Models文件夹中。在该文件夹中,我们直接创建ViewModel类。但通常我也会有Model类,以从数据库或其他东西中获取数据。然后我从Controller与Model方法“对话”并将结果存储在ViewModel属性中。但是当我同时使用Model类和ViewModel类时,我该把它们放在哪里呢?在为这两者构建文件/文件夹的意义上,什么是好的做法? 最佳答案 只需在您的项目中创建一个名为ViewMod

c# - ASP.NET MVC - 使用 Automapper 进行映射

我目前正在尝试确定何时使用ViewModel,何时不使用。我正在使用Automapper完成任务,目前有以下代码://账户Controller.cs[AuthWhereRole(Roles=AuthorizeRole.Developer)]publicActionResultList(){MembershipUserCollectionusers=_memberShipService.GetAllUsers();IEnumerableviewModel=Mapper.Map,IEnumerable>(users.Cast().AsEnumerable());returnView("Li

c# - Caliburn Micro 取消窗口从 ViewModel 关闭

当用户单击窗口的关闭按钮时,是否可以从ViewModel取消关闭,还是我必须求助于代码隐藏?据我所知,CanClose或TryClose不能解决问题。 最佳答案 您可能已经尝试过了,但我刚刚创建了一个快速测试,从Screen派生了一个View模型并覆盖了CanClose。publicclassShellViewModel:Screen{publicoverridevoidCanClose(Actioncallback){//if(somelogic...)callback(false);//willcancelclose}}

c# - 我应该在不同的 View 中重用 View 模型吗?

我注意到我的View需要与其他人相同的信息。但有时你需要View模型的5个属性,有时只需要2个。您是否在多个View中共享这样的View模型,或者您是否为每个View创建一个单独的View模型,或者您是否更喜欢继承或组合策略?对我来说共享View模型有一些缺点:最小意外原则:只填充一个View模型的5个属性中的2个属性并得到空引用异常是很奇怪的,因为您不想查询数据库的额外数据。当View模型有5个属性时,我希望所有属性都被填充。异常(exception)证明了规则。关注点分离/单一职责原则:View模型在复杂站点上杂乱无章,因为您必须满足每个View的不同需求。如果涉及逻辑,它也会变得

c# - MVC 映射到模型中可为空的 bool 值

使用包含字段的View模型:publicbool?IsDefault{get;set;}尝试在View中映射时出现错误:model.IsDefault)%>无法隐式转换类型“bool”?到'bool'。存在显式转换(是否缺少强制转换?)我试过转换和使用.Value都没有用。请注意,我想要的行为是提交表单时应将模型中的IsDefault设置为true或false。null的值仅表示尚未填充模型。 最佳答案 问题是你真的有三个可能的值;true、false和null,因此CheckBoxFor无法处理这三种状态(只能处理两种状态)。Br

c# - 异步加载 ViewModel 中的数据(使用 async 和 await)不使用数据绑定(bind)

我使用默认模板启动了一个手机应用程序,该模板已经定义了一个View模型。我修改了MainViewModel的LoadData()方法以异步调用odata服务。但它不适用于数据绑定(bind)。我已验证调用成功返回但未显示任何结果。LongListSelector的项源绑定(bind)到View模型中的Items属性。这是我对View模型的修改(注意async和await的用法):publicvoidLoadData(){FetchTileViewItems();}privateasyncvoidFetchTileViewItems(){varret=awaitI2ADataServic

c# - ASP.net MVC - 每个 View 或每个操作一个 ViewModel?

每个View有一个ViewModel还是每个Controller操作一个更好?例子:publicProjectController:Controller{publicActionResultEdit(intid){varproject=...;returnView(newProjectEditViewModel(project));}[HttpPost]publicActionResultEdit(ProjectEditViewModelmodel){}**OR**[HttpPost]publicActionResultEdit(Projectmodel){}[HttpPost]pub