我想发送List<Tupple<>>
到 Controller ,但我做得不好,因为我总是收到消息 No parameterless constructor defined for this object
并且该方法的代码不会被执行。
我使用一个类作为 Controller 参数的 View 模型:
public class InsurancesHospitals
{
public int hospital { get; set; }
public List<Tuple<int, string, bool>> insurances { get; set; }
}
这是 Controller :
[Authorize]
public ActionResult AssociateInsurances(InsurancesHospitals viewModel)
{
foreach (var insurance in viewModel.insurances)
{
/*
Here I do some things...
*/
}
return Redirect("/Hospitals/Index");
}
这是我调用 Controller 的 View :
<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>
最佳答案
就像错误所说:一个元组 has no parameterless constructor ,因此模型绑定(bind)器无法实例化它。
您可以选择困难的方法:创建自己的模型绑定(bind)器,也可以选择简单的方法:简单地引入一个包含适当属性的新类。这还有一个额外的好处:与 ItemN
相反,实际上有用的属性名称。
关于c# - 如何使用 List<Tuple<>> 作为操作方法参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33915085/