我想在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