2013-03-07 134 views
1

我有具有视图模型产品: ProductViewModelASP.NET MVC视图模型传递到不同的视图模型

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; } 
} 

而对于显示的产品列表我有另外一个视图模型: 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; } 
} 

在我的View中,我使用Product 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) {}

我无法弄清楚ProductViewModel中的whydata没有传递给ProductInputModel。我应该如何通过ViewModels获得所选产品?

回答

1

如果要将它们用作操作参数,则您的视图模型必须具有默认无参数构造函数。否则,默认的模型联编程序将不能实例化它。你应该确保你有一个无参数的构造函数给你的ProductInputModel

+0

我为我的ProductInputModel(public ProductInputModel(){})做了空的构造函数,它没有工作(我得到的错误没有为此对象定义的无参数构造函数)。然后,我也为ProductViewModel和ProductListViewModel创建了无参数构造函数,但仍然得到相同的错误..任何其他建议? – intentarr 2013-03-07 12:13:24

+0

您在视图模型的对象层次结构中使用的每个视图模型(控制器操作所采用的参数)都必须具有无参数构造函数。所以如果你得到这个错误,最可能意味着你忘记了某种类型。 – 2013-03-07 13:33:18