草庐IT

初识viewBinding,ViewModel,liveData,dataBinding

全部标签

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

c# - 在viewmodel的构造函数中调用async方法加载数据有警告

我的View包含一个ListView,它显示来自互联网的一些数据,我创建了一个异步方法来加载数据并在我的View模型的构造函数中调用该方法。它有一个警告提示我现在使用await关键字。在构造函数中异步加载数据的任何其他解决方案? 最佳答案 有几个模式可以应用,所有这些都在StephanCleary的帖子中提到过。但是,让我提出一些不同的建议:由于您在WPF应用程序中,我会使用FrameworkElement.Loaded事件并将其绑定(bind)到ViewModel中的ICommand。有界命令将是AwaitableDelegate

c# - 为什么 ICommand 比调用 VM 的代码更好?

我有一个同事问我为什么他必须使用ICommand模式。他想添加一个按钮,然后在后面的代码中为它创建一个事件。然后从事件中他想调用ViewModel上的方法。我给了他一个明显的答案:这增加了View和ViewModel之间的耦合。但他认为View和ViewModel已经耦合。(我们在View后面的代码中将View的DataContext设置为ViewModel:DataContext=newMyViewModel();是的,我告诉他他的方式增加了“更多的耦合”,但即使对我来说听起来也有点蹩脚。所以,我知道ICommand是最干净的方式,我就是这样做的。但是除了不使用现有的耦合器之外,IC

c# - View 是否应该间接绑定(bind)到 MVVM 模型中的属性?

假设我有一个View。它的DataContext绑定(bind)到ViewModel并且ViewModel公开了一个Model属性。MVVM是否喜欢将View中的字段绑定(bind)到Model中的属性(例如BindingPath=Model.FirstName)?Model是否应该实现INotifyPropertyChanged?我的团队在WPF中使用Prism和MVVM。许多Prism示例间接绑定(bind)到Model。我个人怀疑这是正确的方法。我认为模型中的内容应该公开行为(不仅仅是在属性级别)并且应该通过,呃,events来传达重要事件-客户可以订阅或不订阅.我认为通过让域/