2015-08-19 5 views
-1

я получаю следующее сообщение об ошибке:модель элемент передается в словарь типа «», но этот словарь требует модель элемента типа «»

The model item passed into the dictionary is of type 'Cygnus.Global.ViewModels.StoreViewModel', but this dictionary requires a model item of type 'Cygnus.Global.ViewModels.ProductOrderViewModel'.

Ниже мой Код модели:

public class StoreViewModel 
{ 
     public int Id { get; set; } 

     public List<StoreViewModel> Stores { get; set; } 


} 

Ниже мой контроллер Код:

public ActionResult StoreProducts (StoreViewModel model) 
{ 
     CygnusInternalResponseViewModel response = new CygnusInternalResponseViewModel(); 
     response = new Logic(CApplicationId, CurrentCompanyId).GetProductsByStoreId(model.Id); 
     var parentmodel = new ProductOrderViewModel() { Products = response.Model, Orders = new OrderViewModel() }; 
     if (response.Success) 
      return View(model); 

     return View(); 
} 

И следующий мой View Code:

Примечание: StoreViewModel существует в ProductOrderViewModel как свойство

@model Cygnus.Global.ViewModels.ProductOrderViewModel 
@foreach (var pd in Model.Products) 
      { 
      <p> 
      span class="cmtText"> | @pd.Name | @pd.UnitPrice </span> 

      </p> 
      } 
      @Html.LabelFor(m => m.Orders.SubTotal) 
      @Html.TextBoxFor(m => m.Orders.SubTotal, new { @readonly = "readonly", @style = "width:100px; float:right;margin-top:-21px;" }) 
+0

Вы вид нужна модель с типом ' ProductOrderViewModel' –

+2

Ошибка сама по себе - ваш взгляд имеет '@model ProductOrderViewModel', но ваш passin g это экземпляр «StoreViewModel» –

+0

Посмотрите на свой метод post - его параметр «StoreViewModel model» (который всегда будет «null», поэтому его бессмысленно), и у вас есть «return View (model);'! Научитесь отлаживать свой код –

ответ

3

я исправил свою ошибку в контроллере

public ActionResult StoreProducts (StoreViewModel model) 
{ 
     CygnusInternalResponseViewModel response = new CygnusInternalResponseViewModel(); 
     response = new Logic(CApplicationId, CurrentCompanyId).GetProductsByStoreId(model.Id); 
     var parentmodel = new ProductOrderViewModel() { Products = response.Model, Orders = new OrderViewModel() }; 
     if (response.Success) 
      return View(model); 

     return View(); 
} 

К

public ActionResult StoreProducts (StoreViewModel model) 
{ 
     CygnusInternalResponseViewModel response = new CygnusInternalResponseViewModel(); 
     response = new Logic(CApplicationId, CurrentCompanyId).GetProductsByStoreId(model.Id); 
     var parentmodel = new ProductOrderViewModel() { Products = response.Model, Orders = new OrderViewModel() }; 
     if (response.Success) 
      return View(parentmodel); 

     return View(); 
} 
0

Что вы не получите об ошибке?

Модель вашего вида Cygnus.Global.ViewModels.ProductOrderViewModel, но вы переходите от контрольной модели объекта объекта ведьма StoreViewModel.

Я Гесс, лучше написать свой контроллер, как это:

public ActionResult StoreProducts (StoreViewModel model) 
{ 
     CygnusInternalResponseViewModel response = new CygnusInternalResponseViewModel(); 
     response = new Logic(CApplicationId, CurrentCompanyId).GetProductsByStoreId(model.Id); 
     var parentmodel = new ProductOrderViewModel() { Products = response.Model, Orders = new OrderViewModel() }; 
     if (response.Success) 
      ViewData.Model = parentmodel //This is right model 

     return View(); 
} 
+0

спасибо, что я исправлен виноват – ARC

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

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