当前位置: 首页 > 编程语言 > C#

ASPMVC4-通过视图模型查看通过列表分享

时间:2023-04-10 18:06:56 C#

ASPMVC4-通过视图模型通过列表查看everyone和every计算出的人的年龄被传递给这个视图:ViewModelpublicclassvm_PersonList{publicPersonPerson{get;放;}publicintage{得到;放;}}控制器动作:publicActionResultPersonList(){ViewBag.Message="MyList";varlist=new列表();varlist_p=newvm_PersonList();foreach(varpindb.Person){list_p.Person=p;//年龄将根据p.birthDay计算,与//当前问题无关list_p.age=23;列表。添加(list_p);}返回视图(列表);}Landscape@modelList@foreach(varpinModel){@p.Person.FullName@p.age}Person表包含例如6个条目。调试应用程序时,我看到:在控制器操作结束时,“列表”正确包含6个不同的Person条目在视图中,“模型”包含6个条目,但是是最后一个“数据库条目”的6倍。有没有人有解决这个问题的建议?您在循环list_p中使用相同的list_p实例。所以你不断更新它的Person属性。由于Person是引用类型,因此您在内存中修改相同的引用。在循环的最后一次迭代中,您显然用最后一个Person实例替换了此引用,这解释了为什么您在视图中看到同一个人。试试这个,看起来很简单:publicActionResultPersonList(){ViewBag.Message="MyList";varmodel=db.Person.Select(p=>newvm_PersonList{Person=p,age=23}).ToList();返回视图(模型);您正在处理同一个vm_PersonList实例。将vm_PersonList的实例化移动到循环foreach(varpindb.Person){varlist_p=newvm_PersonList();list_p.Person=p;//年龄将根据p.birthDay计算,与//当前问题无关list_p.age=23;列表。添加(list_p);这与list_p实例的范围有关。尝试将controller代码改成:以上是C#学习教程:ASPMVC4-通过视图模型查看通过列表共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注—publicActionResultPersonList(){ViewBag.Message="MyList";varlist=db.Person.Select(p=>newvm_PersonList{Person=p,age=23,}).ToList();返回视图(列表);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: