2016-12-20 4 views
0

Пробовал следовать некоторым онлайн-примерам, чтобы отвлечься от использования моделей для своих просмотров, использовать модели просмотра.Viewmodel, не возвращающий данные

У меня есть модель под названием «Свойство», и я создал ViewModel с именем «PropertyIndexViewModel», который теперь просматривает мое представление.

Мои действия контроллера:

// GET: Property ***TEST*** 
public async Task<ActionResult> Index1(int? id, PropertyIndexViewModel viewModel) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Property property = await db.Property.FindAsync(id); 
    if (property == null) 
    { 
     return HttpNotFound(); 
    } 
    return View(viewModel); 
} 

Моя точка зрения не бросать какие-либо ошибки, но это также не возвращает ожидаемые данные из модели?

+0

Ваши действия метод возвращает объект 'PropertyIndexViewModel'. Если метод не вызывается передачей данных для объекта, объект 'viewModel' будет иметь значение NULL. –

+0

Вы смешиваете MVVM и MVC. Не делайте этого, вы просто бесполезно вызывают проблемы. Единственный раз, когда вы захотите использовать MVVM в приложении ASP.NET MVC, находится на клиенте (с угловым или нокаутом или аналогичным). Это называется ASP.NET MVC, а не ASP.NET MVVM по какой-то причине. – Will

ответ

2

Вы должны инициализировать модель представления, заполнить ее данными модели собственности и вернуть ее.

// GET: Property ***TEST*** 
public async Task<ActionResult> Index1(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Property property = await db.Property.FindAsync(id); 
    if (property == null) 
    { 
     return HttpNotFound(); 
    } 

    var viewModel = new PropertyIndexViewModel { 
     Prop1 = property.Prop1 
     // your stuff 
    }; 

    return View(viewModel); 
} 

По вашему мнению, вы должны указать модель:

@model PropertyIndexViewModel 
+0

Спасибо, что сработало отлично. Думаю, я предположил, что отображение будет автоматическим. Я могу представить, что это становится довольно сложным, когда вам приходится сопоставлять большие viewmodels! в любом случае, еще раз спасибо за ваши усилия – Gavin5511

+0

Это автоматический, если ваш вид отображает модель, конечно, создание модели представления в сложном сценарии может быть не так быстро и просто. –

Смежные вопросы