【发布时间】:2013-10-22 09:52:42
【问题描述】:
按照教程,并按步骤进行操作,但当我想编辑字段时出现错误。
来源错误:
</div>
<div class="editor-field">
@Html.DropDownList("JobTitleID", String.Empty)
@Html.ValidationMessageFor(model => model.JobTitleID)
</div>
这是我的控制器:
// POST: /Employee/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "SIN, FirstName, MiddleName, LastName, StartDate, Salary, JobTitleID, DepartmentID")] Employee employee)
{
try
{
if (ModelState.IsValid)
{
db.Employees.Add(employee);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (DataException dex)
{
if (dex.InnerException.InnerException.Message.Contains("IX_Employee_SIN"))
{
ModelState.AddModelError("SIN", "Unable to save changes. Remember, you cannot have duplicate SIN numbers.");
}
else
{
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
}
}
DepartmentDropDownList(employee.DepartmentID);
JobDropDownList(employee.JobTitleID);
return View(employee);
}
//
// GET: /Employee/Edit/5
public ActionResult Edit(int id = 0)
{
Employee employee = db.Employees.Find(id);
if (employee == null)
{
return HttpNotFound();
}
DepartmentDropDownList(employee.DepartmentID);
JobDropDownList(employee.JobTitleID);
return View(employee);
}
//
// POST: /Employee/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "ID, SIN, FirstName, MiddleName, LastName, StartDate, Salary, JobTitleID, DepartmentID")] Employee employee)
{
try
{
if (ModelState.IsValid)
{
db.Employees.Add(employee);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (DataException dex)
{
if (dex.InnerException.InnerException.Message.Contains("IX_Employee_SIN"))
{
ModelState.AddModelError("SIN", "Unable to save changes. Remember, you cannot have duplicate SIN numbers.");
}
else
{
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
}
}
DepartmentDropDownList(employee.DepartmentID);
JobDropDownList(employee.JobTitleID);
return View(employee);
}
private void JobDropDownList(object selectedJob = null)
{
var dQuery = from d in db.JobTitles
orderby d.Title
select d;
ViewBag.JobID = new SelectList(dQuery, "ID", "Title", selectedJob);
}
private void DepartmentDropDownList(object selectedDepartment = null)
{
var dQuery = from d in db.Departments
orderby d.DepartmentName
select d;
ViewBag.DepartmentID = new SelectList(dQuery, "ID", "DepartmentName",selectedDepartment);
}
我对 MVC 并不是很熟悉,只是想问一下问题是什么,以及如何解决它。
【问题讨论】:
-
您使用的是哪个版本的 MVC?您似乎正在尝试使用此扩展方法:msdn.microsoft.com/en-us/library/dd504970(v=vs.108).aspx - 也许它是在比您使用的版本晚的版本中引入的?
-
错误提示您正在尝试将一个整数绑定到一个下拉列表,该下拉列表需要一个 IEnumerable 的选择列表项
-
不清楚您的
DepartmentDropDownList和JobDropDownList方法是做什么的,顺便说一句 - 这可能是问题... -
试试
@Html.DropDownList("JobID", String.Empty) -
尝试按字母顺序排列。
标签: c# html asp.net-mvc