我正在使用以下代码,我很惊讶它给了我错误信息:
没有为此对象定义无参数构造函数。
public ActionResult CreateEmployee(int ID, string Name)
{
Employee model = new Employee(ID, Name);
return View(model);
}
[HttpPost]
public ActionResult CreateEmployee(Employee model)
{
try
{
return RedirectToAction("Tasks");
}
catch (Exception e)
{
ModelState.AddModelError("Error", e.Message);
return View(model);
}
}
public ActionResult Tasks(int ID, string Name)
{
EmployeeListModel model = new EmployeeListModel(ID, projectName);
return View(model);
}
CreateEmployee的视图:
@model MvcUI.Models.Employee
@using (Html.BeginForm())
{
@Html.Partial("EmpDetails", Model)
<p> <input type="submit" value="Save" /></p>
}
答案 0 :(得分:0)
这是正常的。看起来Employee对象没有无参数构造函数,但您在POST操作中将它用作操作参数:
public ActionResult CreateEmployee(Employee model)
调用以从POSTed请求值绑定Employee对象的默认模型绑定器不可能知道如何实例化它。您可以为此对象提供无参数构造函数,也可以编写自定义模型绑定器。
答案 1 :(得分:0)
看起来您的Employee
类没有定义无参数构造函数。您应该定义无参数构造函数
public class Employee {
//parameterless constructor
public Employee() {
}
//your constructor
public Employee(int id, string name) {
}
}
默认模型绑定器使用无参数构造函数在CurrentEmployee
操作中实例化对象。否则它不知道如何实例化你的对象。
或者,您可以创建自定义模型绑定器来创建和绑定Employee
对象。