加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC ViewModel模式

发布时间:2020-12-15 18:36:03 所属栏目:asp.Net 来源:网络整理
导读:编辑:我使用ViewModels(称为ValueInjecter)从视图中填充和读取数据,我做得更好。 http://valueinjecter.codeplex.com/ 它被http://prodinner.codeplex.com使用 – 一个ASP.net MVC示例应用程序 您可以看到在prodinner中使用ViewModels的最佳方法 使用ViewM
编辑:我使用ViewModels(称为ValueInjecter)从视图中填充和读取数据,我做得更好。 http://valueinjecter.codeplex.com/

它被http://prodinner.codeplex.com使用 – 一个ASP.net MVC示例应用程序
您可以看到在prodinner中使用ViewModels的最佳方法

使用ViewModel存储映射逻辑不是一个好主意,因为有重复和SRP违规,但现在用ValueInjecter我有干净的ViewModels和干地图代码

这是旧的东西,不要使用它:
我在asp.net mvc中编辑了一个ViewModel模式来编辑东西
当您必须使用表单编辑实体时,此模式很有用,并且必须在表单上放置一些下拉列表以供用户选择某些值

public class OrganisationBadViewModel
    {
        //paramterless constructor required,cuz we are gonna get an OrganisationViewModel object from the form in the post save method
        public OrganisationViewModel() : this(new Organisation()) {}
        public OrganisationViewModel(Organisation o)
        {
            Organisation = o;
            Country = new SelectList(LookupFacade.Country.GetAll(),"ID","Description",CountryKey);  
        }       
        //that's the Type for whom i create the viewmodel
        public Organisation Organisation { get; set; }
...     

    }

解决方法

有几件事情打扰我。

>术语。 ViewModel是一个简单的视图数据,被安装并被控制器消耗。由于ASP.NET MVC基础架构负责选择控制器和适当的操作,View对于控制器一无所知。控制器处理用户交互。我认为它比ViewModel看起来更像被动视图(我认为ViewModel的意思是Model-View-ViewModel模式)。
>细节。填充视图数据的控制器不应该知道视图的实现细节。然而OrganisationViewModel.Country公开了不必要的细节(SelectListItem是纯视图实现细节)。因此使控制器依赖于实现细节。我认为应该改变,以避免它。考虑使用一些可以保存一个国家的数据的对象。

希望这可以帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读