我想在MVC中使用viewmodel而不是使用viewbag。有沒有一種方法可以創建一些在我的所有控制器之間共享的通用視圖模型,然後在我的視圖中使用它?我需要什麼樣的代碼?我正在考慮在基本控制器中創建一些東西。那可能嗎?如何在MVC中創建通用視圖模型?
5
A
回答
7
我相信控制器和視圖之間傳遞數據的主要方法是創建一個類,它表示要傳遞給視圖的數據並將該模型變量傳遞給視圖方法。
/Models/Home/IndexViewModel.cs
namespace MyProject.Models.Home
{
public class IndexViewModel
{
public string Message { get; set; }
}
}
控制器/ HomeController.cs
public class HomeController
{
public ActionResult Index()
{
IndexViewModel model = new IndexViewModel();
model.Message = "Hello World!";
View(model);
}
}
/Views/Home/Index.cshtml(在剃刀MVC3)
@Model MyProject.Models.Home.IndexViewModel //strongly-typed view
<h1>@model.Message</h1>
讓我們來看一個簡單的例子,並根據您的具體要求進行構建。簡單的方法是讓每個視圖簡單地使用MyClass
模型。然而,這變得非常不靈活,所以這就是我將如何保持設計的靈活性。我將假設有一些數據要傳遞給許多視圖(部分或全部)。
創建類,它表示你想傳遞給多個視圖中的數據:
/Models/SharedData.cs
namespace MyProject.Models
{
public class SharedData
{
public DateTime Birthday { get; set; }
}
}
創建一個接口,用於模型需要SharedData類。
/Models/ISharedDataViewModel.cs
namespace MyProject.Models
{
public interface ISharedDataViewModel
{
public SharedData Data { get; set; }
}
}
更新主頁IndexViewModel使用接口和shareddata
/Models/Home/IndexViewModel.cshtml
namespace MyProject.Models.Home
{
public class IndexViewModel: ISharedDataViweModel
{
public string Message { get; set; }
public ShardedData Data { get; set; }
}
}
創建知道如何顯示共享數據的部分視圖
個/Views/Shared/SharedDataView.cs(剃刀中MVC3)
@Model MyProject.Models.ISharedDataViewModel //strongly-typed partial view
@if (model != null && model.Data != null)
{
<h3>@model.Data.Birthday.ToString()</h3>
}
更新首頁索引頁調用局部視圖
/Views/Home/Index.cshtml (在剃刀MVC3中)
@Model MyProject.Models.Home.IndexViewModel //strongly-typed view
<h1>@model.Message</h1>
@Html.Partial("SharedDataView", model)
現在任何頁面都可以調用局部視圖,如果頁面模型實現ISharedDataViewModel
。
相關問題
- 1. 如何創建通用視圖模型
- 2. 如何在mvc中從視圖模型創建強類型局部視圖?
- 3. 通過模型在MVC視圖中創建到控制器
- 4. C#MVC動態創建視圖模型
- 5. ASP.Net MVC創建視圖多模型
- 6. 如何用多個模型創建視圖mvc 4?
- 7. 在asp.net中使用動態模型創建視圖mvc
- 8. 各種視圖模型結構 - 如何創建視圖模型
- 9. 如何通過asp.net中的視圖創建/編輯模型mvc 5
- 10. ASP.NET MVC。如何使無模型部分(如創建視圖)
- 11. MVC:如何正確創建未知模型的視圖
- 12. 在mvc中創建視圖
- 13. 如何使用2個不同模型創建視圖模型
- 14. 通用視圖模型控件(MVC)
- 15. MVC中的模型到視圖通信?
- 16. 如何用MVC創建模型
- 17. 模型對象是否應通過MVC模式中的視圖創建?
- 18. 爲模型創建視圖
- 19. System.NullReferenceException創建視圖模型
- 20. 在ASP.NET MVC中創建實體類型的視圖模型僅用於驗證?
- 21. MVC如何創建磚(?)在視圖
- 22. ASP.NET MVC視圖模型 - 如何在視圖中顯示數據?
- 23. 在mvc中使用通用視圖模型
- 24. 模型視圖在MVC
- 25. 創建一個組合框在一個視圖模型9+ MVC
- 26. MVVM:如何創建模型對象視圖模型
- 27. 分配給模型的創建/新視圖需要mvc建議?
- 28. 如何在Django視圖中創建模型對象?
- 29. 如何在Loopback中創建數據視圖模型?
- 30. 如何在我的視圖模型中即時創建UI
^很好的解釋和最好的實現。 – jhartzell 2012-02-24 03:30:54