2013-03-07 135 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