從我讀過的,我應該使用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