Asp.net mvc MVC错误:没有为此对象定义无参数构造函数

Asp.net mvc MVC错误:没有为此对象定义无参数构造函数,asp.net-mvc,Asp.net Mvc,我有一个搜索控制器 public ActionResult Index(int? page) { var vm = new SearchViewModel(); var list = _db.Intrusts.ToList(); int pageNumber = (page ?? 1); return View(new Tuple<SearchViewModel, PagedList.IPagedList<I

我有一个搜索控制器

  public ActionResult Index(int? page)
    {
        var vm = new SearchViewModel();
        var list = _db.Intrusts.ToList();
        int pageNumber = (page ?? 1);
        return View(new Tuple<SearchViewModel, PagedList.IPagedList<Intrust>>(vm, list.ToPagedList(pageNumber, 10)));
    }

    [HttpPost]
    public ActionResult Index(Tuple<SearchViewModel, PagedList.IPagedList<Intrust>> model)
    {
        var vm = model.Item1;
        var list = _db.Intrusts.ToList();
        if (vm.Code != null)
            list = list.Where(m => m.Code == vm.Code).ToList();


        return View("Index", new Tuple<SearchViewModel, PagedList.IPagedList<Intrust>>(vm, list.ToPagedList(1, 10)));
    }
public ActionResult索引(int?页)
{
var vm=新的SearchViewModel();
var list=_db.Intrusts.ToList();
整数页码=(第1页);
返回视图(新元组(vm,list.ToPagedList(页码,10));
}
[HttpPost]
公共行动结果索引(元组模型)
{
var vm=model.Item1;
var list=_db.Intrusts.ToList();
if(vm.Code!=null)
list=list.Where(m=>m.Code==vm.Code).ToList();
返回视图(“索引”,新元组(vm,list.ToPagedList(1,10));
}
以及

@model Tuple<_6badgiri.ViewModels.SearchViewModel, PagedList.IPagedList<_6badgiri.Models.Intrust>>
@using (Html.BeginForm("Index", "Search", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<div class="row">
  @Html.LabelFor(m => m.Item1.StateId)
  @Html.DropDownListFor(m => m.Item1.StateId, new SelectList(area, "Id", "Name"))
</div>
 <input type="submit" value="جستجو " id="btnsubmit" class="wpb_button btn td-login-button green" />
}
@模型元组
@使用(Html.BeginForm(“Index”,“Search”,FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
@LabelFor(m=>m.Item1.StateId)
@DropDownListFor(m=>m.Item1.StateId,新选择列表(区域,“Id”,“Name”))
}

但是当我点击submit按钮时,我得到一个错误
没有为这个对象定义无参数构造函数。

问题是
元组没有默认构造函数,所以默认模型绑定器无法初始化它


您应该使用另一个适当的类型或实现自定义模型绑定器来绑定到
Tuple
类型

更改代码,如下所示

在这里,我将第3行中的代码更改为搜索到索引。因为您使用的是搜索操作方法,而不是索引

@model Tuple<_6badgiri.ViewModels.SearchViewModel, 
PagedList.IPagedList<_6badgiri.Models.Intrust>>
@using (Html.BeginForm("Index", "Search", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<div class="row">
  @Html.LabelFor(m => m.Item1.StateId)
  @Html.DropDownListFor(m => m.Item1.StateId, new SelectList(area, "Id", "Name"))
</div>
 <input type="submit" value="جستجو " id="btnsubmit" class="wpb_button btn td-login-button green" />
}
@模型元组
@使用(Html.BeginForm(“Index”,“Search”,FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
@LabelFor(m=>m.Item1.StateId)
@DropDownListFor(m=>m.Item1.StateId,新选择列表(区域,“Id”,“Name”))
}

您的表单正在发布到
搜索
操作,它在哪里?您从哪里获得异常,异常堆栈是什么?你有一个构造函数吗?您的控制器是否命名为
SearchController
,或者您是否正在向其他控制器发帖?您发布的代码与此无关,除非异常发生在一行中。对不起,这是searchController,请参见我的编辑。您可以创建一个包含这两个模型的viewmodel