c# - 如何使用 List<Tuple<>> 作为操作方法参数?

标签 c# asp.net-mvc

我想发送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/

相关文章:

c# - .NET:发送带数据的 POST 和读取响应的最简单方法

asp.net - Visual Studio 2019 添加区域缺失

c# - ASP MVC5 - 身份。如何获取当前 ApplicationUser 并使用此用户查询以用户为外键的表

c# - 在 Newtonsoft JSON 中转义引号

c# - 如何将 VC++ 2015 可再发行组件与我的 ClickOnce (.NET) 应用程序捆绑在一起?

asp.net - <sessionState mode ="Off"/> 时使用 TempData

asp.net-mvc - Razor View 中的 foreach 内的 foreach 不起作用

asp.net-mvc - 移动端内容适配的方法

c# - 使用任务计划程序并且用户已注销时如何找到 AutomationElement?

c# - 字段和属性有什么区别?