2013-03-07 3 views
1

У меня есть продукт, который имеет ViewModel: ProductViewModelASP.NET MVC передать ViewModel различным ViewModel

private int _id; 
private string _name; 
private string _type; 
private int _selectedID; 

public ProductViewModel(int id, string name, string type) 
{ 
    _ id = id; 
    _ name = name; 
    _ type = type; 
} 
public int ProductID 
{ 
    get { return _id; } 
    set { _id = value; } 
} 
public string Name 
{ 
    get { return _name; } 
    set { _name = value; } 
} 
public string Type 
{ 
    get { return _type; } 
    set { _type = value; } 
} 
public int Selected 
{ 
    get { return _selected; } 
    set { _selected = value; } 
} 

И для показа списка продуктов у меня есть еще один ViewModel: ProductListViewModel

private PagedResult<ProductViewModel> _pagedResult; 
private string _sortColumn = "Id"; 
private string _sortOrder = "ASC"; 

public LostAssetsListViewModel(PagedResult<ProductViewModel> products) 
{ 
    _pagedResult = products; 
} 

public PagedResult<ProductViewModel> List 
{ 
    get { return _pagedResult; } 
    set { _pagedResult = value; } 
} 
public string SortColumn 
{ 
    get { return _sortColumn; } 
    set { _sortColumn = value; } 
} 
public string SortOrder 
{ 
    get { return _sortOrder; } 
    set { _sortOrder = value; } 
} 

И в моем представлении я использую продукт LisViewModel для отображения списка продуктов. И в каждом продукте, я хочу, чтобы добавить кнопку радио (чтобы выбрать этот продукт)

<% = Html.RadioButtonFor(m => m.List[i].Selected, "false", Model.List[i]. ProductID)%> 

Для получения всех данных в моем контроллере я создал ProductInputModel:

ProductInputModel

private int _id; 
private string _name; 
private string _type; 
private int _selectedID; 

public ProductInputModel(int id, string name, string type) 
{ 
    _ id = id; 
    _ name = name; 
    _ type = type; 
} 
public int ProductID 
{ 
    get { return _id; } 
    set { _id = value; } 
} 
public string Name 
{ 
    get { return _name; } 
    set { _name = value; } 
} 

public string Type 
{ 
    get { return _type; } 
    set { _type = value; } 
} 

public int Selected 
{ 
    get { return _selected; } 
    set { _selected = value; } 
} 

В моем контроллере вход пуст: [HttpPost] public ActionResult Details (ProductInputModel input) {}

Я не могу понять whydata из ProductViewModel не переходит к ProductInputModel. Как получить выбранный продукт через ViewModels?

ответ

1

Модели вашего представления должны иметь конструкторы без параметров без параметров, если вы хотите использовать их в качестве параметров действия. В противном случае связующее устройство по умолчанию не сможет его создать. Вы должны убедиться, что у вас есть конструктор без параметров для вашего ProductInputModel.

+0

Я создал пустой конструктор для моего ProductInputModel (public ProductInputModel() {}), и он не сработал (я получаю ошибку. Нет конструктора без параметров для этого объекта.). Затем я также сделал безпараметрический конструктор для ProductViewModel и ProductListViewModel, и все равно получаю ту же ошибку. Любые другие советы? – intentarr

+0

Каждая модель просмотра, которую вы используете в иерархии объектов модели представления, которую действие контроллера принимает как аргумент, должно иметь конструкторы без параметров. Поэтому, если вы получаете эту ошибку, скорее всего, вы забыли какой-то тип. –

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