【发布时间】:2023-04-05 05:23:01
【问题描述】:
根据我的阅读,我应该使用 ViewModels 在 MVC 中填充我的视图,而不是直接使用模型。这应该使我不仅可以将模型的内容,还可以将其他信息(例如登录状态等)传递给视图,而不是使用 ViewBag 或 ViewData。我已按照教程进行操作,并且已成功将模型和视图模型发送到视图。我最初遇到的问题是我需要一个分页视图,这在单独传递模型时很简单,但在传递视图模型时变得困难。
有一个模型
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,因为这只是模型,我可能已经直接通过了。
建议的另一种方法是将视图模型转换/扩展为列表或类似的东西,这将产生一个像这样的对象并传递给视图
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"
LoggedIn 值在每一行中重复,然后使用 Model[0].LoggedIn 在行中检索
很明显,这个问题是因为你只能从一个方法传回一个对象,Instructor、InstructorVM、List<InstructorVM>等。
我正在尝试找出最佳选项,让我从视图模型中进行分页(在返回的对象的一部分上),同时不复制视图模型中的所有其他内容。
一个建议是使用像 React/Angular 这样的 JavaScript 框架将页面分解为更 MVVM 的处理方式,但问题在于尽管通过 Google 寻找建议并阅读了 1001 个“最佳 JS 框架”列表,他们都假设我已经学习了所有的框架,因此可以从可用的选项中选择最合适的一个。
当我想要做的只是从视图上的视图模型中显示一个字符串和一个分页列表时。在这一点上,我不在乎如何,我不在乎我是否必须学习 JS 框架,或者我是否可以只使用 MVC 核心来做到这一点,但是有人可以告诉我如何做这件事,我可以很简单地做到ASP.NET?如果是“使用 JS 框架”,是哪一个? 谢谢
【问题讨论】:
标签: asp.net-core-mvc javascript-framework