从我读过的,我应该使用ViewModels在MVC中填充我的视图,而不是直接模型。这应该允许我不仅传递模型的内容,还传递其他信息,例如登录状态等,而不是使用ViewBag或ViewData。我遵循了教程,并且我已经将模型和视图模型成功发送到视图。我遇到的最初问题是我需要一个分页视图,在单独传递模型时很简单,但在传递视图模型时变得困难。如何绕过MVC-CORE控制器可以传递给视图的限制?
随着
public class Instructor {
public string forename { get; set; }
public string surname { get; set; }
}
模型和
public class InstructorVM {
public Instructor Instructors { get; set; }
public string LoggedIn { get; set; }
}
我可以创建一个使用纯模式Instructor
教官的分页列表,但我不能通过InstructorVM
到视图一个视图模型并为它分页,因为在分页LoggedIn
中不需要其他属性会导致问题。如果我通过InstructorVM.Instructors
的观点,我得到的分页,但没有得到LoggedIn
,因为这只是模型,我可能已经很好地通过了直接。
有人提出另一种是转换/展开视图模型到一个列表或诸如此类这将产生一个对象像这样获取传递到每一行中重复LoggedIn
值的视图
instructor.forename = "dave", instructor.surname = "smith", LoggedIn="Hello brian"
instructor.forename = "alan", instructor.surname = "jones", LoggedIn="Hello brian"
instructor.forename = "paul", instructor.surname = "barns", LoggedIn="Hello brian"
然后使用Model[0].LoggedIn
显然,这引起问题的行中检索,因为你只能从一个方法通过一个对象返回,要么Instructor
,InstructorVM
,List<InstructorVM>
等
我试图找出最佳选择,让我从viewmodel分页(部分返回对象),而不复制viewmodel中的所有内容。
一个建议是使用像React/Angular这样的JavaScript框架将页面分解成更多的MVVM做事方式,这样做的问题在于,尽管通过寻找建议和阅读1001“最佳JS框架”列表通过谷歌,他们都假设我已经学习了所有的框架,因此可以从可用的选项中选择最合适的框架。
当我想要做的就是在视图上显示一个字符串和一个来自viewmodel的分页列表。在这一点上,我不在乎如何,我不在乎是否必须学习一个JS框架,或者如果我可以使用MVC内核来做到这一点,但有人可以告诉我如何做到这一点,我可以做的很简单ASP.NET?如果是“使用JS框架”哪一个? 谢谢
我一直在浏览https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro的Microsoft文档,这就是为什么我在这里结束了。按照他们的例子,分页在后端控制器中完成,模型Instructor的数据的相关分页子集或InstructorVM.Instructor的数据从控制器传递到View。将viewmodel'InstructorVM.Instructor'的可分页部分从控制器传递到视图会丢失Viewmodel的其他属性,在本例中为'LoggedIn' – Glyn
分页是关于数据的子集,是的,我知道,我的问题不是分页,它会将所有视图模型,分页子集和所有其他属性添加到视图中,而文档不会这样做。 和其他的例子是类似的,paginate-a-model/don't-paginate-a-viewmodel,因此我在这里 – Glyn