我想向控制器发送一个List<Tupple<>>
,但我做得不好,因为我总是收到消息No parameterless constructor defined for this object
并且方法的代码没有被执行。
我正在使用一个类作为控制器参数的视图模型:
public class InsurancesHospitals
{
public int hospital { get; set; }
public List<Tuple<int, string, bool>> insurances { get; set; }
}
这是控制器:
[Authorize]
public ActionResult AssociateInsurances(InsurancesHospitals viewModel)
{
foreach (var insurance in viewModel.insurances)
{
/*
Here I do some things...
*/
}
return Redirect("/Hospitals/Index");
}
这是我称之为控制器的视图:
<form id="formulario" role="form" method="post" action="~/Hospitals/AssociateInsurances">
<label class="control-label" for="hospital">Hospital</label>
<select class="form-control" id="hospital" name="hospital">
@foreach (var hospital in (IQueryable<HOSPITALS>)ViewData["hospitals"])
{
<option value="@hospital.ID" >@hospital.NAME</option>
}
</select>
<div class="col-xs-12">
<div class="row">
@{
var insurances = ((IQueryable<INSURANCES>)ViewData["insurances"]).ToList();
for (var index=0; index < insurances.Count(); index++)
{
<input type="hidden" value="@insurances[index].ID" class="insurances" name="insurances[@index].Item1" />
<div class="col-xs-3">
<input type="checkbox" data-id="@insurances[index].ID" class="association" name="insurances[@index].Item3" />
@insurances[index].NAME
</div>
<div class="col-xs-3">
<input type="text" data-id="@insurances[index].ID" class="form-control codes" name="insurances[@index].Item2" />
</div>
}
}
</div>
</div>
<button class="btn btn-success" type="submit">
<span>Associate</span>
</button>
</form>
答案 0 :(得分:3)
如错误所示:元组has no parameterless constructor,因此模型绑定器无法实例化它。
你可以采取艰难的方式:创建自己的模型绑定器,或者简单的方法:简单地引入一个包含适当属性的新类。这有一个额外的好处:实际有用的属性名称,而不是ItemN
。