将Dropdown值从字符串转换为int

时间:2019-02-20 08:14:37

标签: c# asp.net-mvc-5

我有使用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”。

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:1)

有两件事发生:

  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; (由于迄今为止未知的原因)。
  2. 它进入DbUpdateException,在这里您似乎试图通过调用catch来显示异常,但是要运行该视图,return View(ex)就需要包含类似{ {1}}。并非如此,这会导致另一个异常。
    您需要找到另一种处理异常信息的方法;例如调用Create.cshtml,或创建一个使用@model System.Exception的错误视图Logger.Log(ex),然后通过在捕获部分执行Views/Shared/Error.cshtml来调用该视图。