Я бы хотел использовать viewmodel в MVC вместо использования viewbag. Есть ли способ создать некоторую общую модель представления, которая будет использоваться всеми моими контроллерами, а затем использовать это в моих представлениях? Какой код мне нужен для этого? Я думал, что может создать что-то в базовом контроллере. Это возможно?Как создать общую модель представления в MVC?
ответ
Я считаю, что преобладающим методом передачи данных между контроллерами и представлениями является создание класса, представляющего данные, которые вы хотите передать вашему представлению, и передать эту переменную модели методу представления.
/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; }
}
}
Обновление Home 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 (в Razor 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 (в Razor MVC3)
@Model MyProject.Models.Home.IndexViewModel //strongly-typed view
<h1>@model.Message</h1>
@Html.Partial("SharedDataView", model)
Теперь любая страница может вызвать частичный вид, если модели страниц реализуются ISharedDataViewModel
.
- 1. создать общую модель представления в zend framework 2 project
- 2. Как создать общую модель контроллера в Ember.js?
- 3. Как создать сложную модель представления в ASP.NET MVC?
- 4. Когда использовать модель представления в ASP.NET MVC?
- 5. использует модель представления обязательной в MVC
- 6. Как создать модель Rails без представления HTML
- 7. Как создать модель представления для отображения?
- 8. C# MVC Динамически создавать модель представления
- 9. Как создать единую общую модель для всех VC в UITabBarController?
- 10. Как создать общие представления в MVC
- 11. Как создать динамические представления в asp.net mvc?
- 12. Как получить модель представления вне представления
- 13. Модель Asp.net MVC для представления и компоновки
- 14. ASP.NET MVC 4 - Обновить модель из представления
- 15. Как передать переменную из представления в модель в mvc (PHP)
- 16. MVC обновляет модель представления с помощью jquery
- 17. Как создать общую модель для двух разных видов?
- 18. лучший способ создать общую модель, которая может быть ленивой.
- 19. как передать knockoutjs модель представления в MVC контроллер
- 20. как отредактировать в asp.net mvc 5 используя модель представления?
- 21. Как создать сопоставление контекста в общую таблицу комментариев ASP MVC?
- 22. Как создать круговой импорт из представления в модель в django?
- 23. Как создать общую AsyncTask?
- 24. ASP.NET MVC 4: как создать «хорошую» модель?
- 25. Как создать перечислимую модель для MVC?
- 26. Как обновить модель в MVC
- 27. Создать общую общую строку в sql-сервере
- 28. Как создать модель представления без сортировки коллекций в памяти
- 29. Как установить значения из представления в модель?
- 30. Как создать модель представления для заполненного выпадающего списка в ASP.NET MVC 3
^Отличное объяснение и лучшая реализация далеко. – jhartzell