1

私はviewModelを持つ製品を持っています: ProductViewModel

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

私のビューでは、Product LisViewModel を使用して製品のリストを表示しています。そして、すべての製品にラジオボタンを追加したい(その製品を選択するため)

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

コントローラーですべてのデータを取得するために、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 のデータが ProductInputModel に渡されない理由がわかりません。ViewModels を介して選択した製品を取得するにはどうすればよいですか?

4

1 に答える 1

1

ビュー モデルをアクション パラメーターとして使用する場合は、デフォルトのパラメーターなしのコンストラクターがビュー モデルに含まれている必要があります。そうしないと、デフォルトのモデル バインダーはそれをインスタンス化できません。にパラメーターのないコンストラクターがあることを確認する必要がありますProductInputModel

于 2013-03-07T12:01:18.017 に答える