ASP.Net MVC3上的HttpPost - “没有为此对象定义的无参数构造函数”

时间:2012-03-25 18:11:55

标签: c# asp.net-mvc

  

可能重复:
  ASP.NET MVC: No parameterless constructor defined for this object

我正在研究ASP.NET MVC3应用程序。

当用户在表单上输入信息时,我正在尝试使用[HttpPost]来检索信息。

基于“默认”空白ASP.Net项目的登录脚本,我有以下内容:

在我的控制器中:

    public ActionResult Ticket(int id)
    {
        Models.Ticket model = new Models.Ticket(id);
        return View("Ticket", model);
    }

    [HttpPost]
    public ActionResult Ticket(int id, MMCR.Models.Ticket model)
    {
        if (id != model.TicketNo)
        {
            return View("Error");
        }
        return View("Ticket", model);
    }

在视图中我有:

@using (Html.BeginForm()) {
    <div>
    <fieldset>
    <legend>View Ticket Details</legend>

    <div class="editor-label">
        @Html.LabelFor(m=>m.Status)    
    </div>
    <div class="editor-field">
        @Html.DropDownListFor(m=>m.Status, Model.Status)
    </div>

    <p>
        <input type="submit" value="Update" />
    </p>

    </fieldset>
    </div>
}

(显然是在剔除重复的东西)。

但是,当我点击按钮时出现错误:

  

异常详细信息:System.MissingMethodException:没有为此对象定义无参数构造函数。

有人可以就如何解决这个问题提出一些建议吗?

1 个答案:

答案 0 :(得分:17)

您的班级MMCR.Models.Ticket需要无参数构造函数。

当您通过Post方法传递此类型的对象时,MVC将使用无参数构造函数创建该类的实例。然后,它会将表单字段映射到该对象。