2012-03-25 57 views
6

Possible Duplicate:
ASP.NET MVC: No parameterless constructor defined for this objectHttpPost在ASP.Net MVC3 -

我工作的一个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> 
} 

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

然而,当我点击按钮,我得到一个错误:

Exception Details: System.MissingMethodException: No parameterless constructor defined for this object.

任何人都可以就如何解决这一些建议吗?

+1

哪个对象缺少无参数构造函数?如果它是你自己的,那么你可以在黑暗中进行刺探并为其添加一个无参数的构造函数。 – 2012-03-25 18:14:24

+0

堆栈跟踪中没有任何东西来自我的一个类。 :( – TZHX 2012-03-25 18:17:44

+0

http://stackoverflow.com/q/1355464/102937 – 2012-03-25 18:19:47

回答

16

您的课MMCR.Models.Ticket需要一个无参数的构造函数。

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

+0

so any information在新模型中没有丢失模型? – TZHX 2012-03-25 18:29:17

+2

这是正确的。如果你有想保留的信息,你应该通过Html.HiddenFor(x => x.PropertyToKeep)将它添加到视图中。将确保它在表单发布时填充 – 2012-03-25 18:30:35

+0

但是...我已经将它们显示为未被转移的标签。:/ – TZHX 2012-03-25 18:37:35