我有使用MVC的C#中的DropDownList代码。并将其值作为字符串传递。但是,我希望将其作为整数。我应该如何在SaveChanges()
之前的控制器上进行转换,因为它会引发错误。
这是我的查看代码:
<div class="form-group">
@Html.LabelFor(model => model.DesignationID, "DesignationID", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("DesignationID", new SelectList(ViewBag.Designationid, "Value", "text"),"Select Designation", htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.DesignationID, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
这是我的控制器代码:
// POST: Employee/Create
[HttpPost]
public ActionResult Create(Employee employee)
{
try
{
employeeService.Insert(employee);
unitOfWork.SaveChanges();
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View(ex);
}
}
这是错误:
传递到字典中的模型项是类型 'System.Data.Entity.Infrastructure.DbUpdateException',但这 字典需要类型为的模型项 “ Pal.Entities.Models.Employee”。
请帮助我解决这个问题。
答案 0 :(得分:1)
有两件事发生:
my %errors = (
NUMBER => 'incorrect number of arguments',
RANGE => 'first argument must be less than second argument',
);
my $usage = 'usage: inlist.pl a b (where a < b)';
die "$errors{NUMBER}\n$usage\n" if @ARGV != 2;
die "$errors{RANGE}\n$usage\n" if $ARGV[0] > $ARGV[1];
print join(',', $ARGV[0] .. $ARGV[1]), "\n";
exit 0;
(由于迄今为止未知的原因)。DbUpdateException
,在这里您似乎试图通过调用catch
来显示异常,但是要运行该视图,return View(ex)
就需要包含类似{ {1}}。并非如此,这会导致另一个异常。Create.cshtml
,或创建一个使用@model System.Exception
的错误视图Logger.Log(ex)
,然后通过在捕获部分执行Views/Shared/Error.cshtml
来调用该视图。