ASP MVC DropDownList错误"转换为类型"

ade*_*ers 5 c# asp.net-mvc

嘿,我有一个表有2个int类型的字段,它们是"StatusID"和"TypeID".TypeID正常工作,但StatusID返回错误.这是我的控制器的样子:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Project project)
{

    var db = new DB();

    if (ModelState.IsValid)
    {

        try
        {
            db.Projects.InsertOnSubmit(project);
            db.SubmitChanges();

            return RedirectToAction("Index");
        }
        catch
        {
            return View(project);
        }
    }


    ViewData["Status"] = from c in db.Status
                         select new SelectListItem
                             {
                                 Text = c.Text,
                                 Value = c.StatusID.ToString()
                             };

    ViewData["Types"] = from t in db.Project_Types
                        select new SelectListItem
                            {
                                Text = t.Text,
                                Value = t.TypeID.ToString()
                            };
    return View(project);
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Message ="从类型'System.String'到类型'ConstructionProject.Models.Status'的参数转换失败,因为没有TypeConverter可以在这些类型之间进行转换."

但就像我说的那样,字段"TypeID"和"StatusID"的数据库模型是相同的.

编辑:

数据库架构:

表项目

ProjectID   int
TypeID      int
StatusID    int
Name        varchar(50)
Description text
DateCreated datetime
ClientID    int
Contractor  int
Run Code Online (Sandbox Code Playgroud)

表状态

StatusID    int
Text        varchar(50)
Run Code Online (Sandbox Code Playgroud)

表项目类型

TypeID      int
Text        varchar(50)
Run Code Online (Sandbox Code Playgroud)

任何人都知道这会纠正这个问题吗?

我的查看页面(更改为StatusID后):

        <p>
            <label for="Status">Status:</label>
            <%= Html.DropDownList("StatusID")%>
            <%= Html.ValidationMessage("StatusID", "*")%>
        </p>
        <p>
            <label for="Types">Type:</label>
            <%= Html.DropDownList("Types")%>
            <%= Html.ValidationMessage("Types", "*")%>
        </p>
Run Code Online (Sandbox Code Playgroud)

Mik*_*ell 5

这是黑暗中的一个镜头:在您的视图中,您已经为状态选择列表提供了"状态"ID,当您发布一组表单数据时,会导致默认表单集映射尝试转换所选值对于列表(这是您的int StatusID的字符串版本)到ConstructionProject.Models.Status 对象,该对象失败.尝试使用"StatusID"作为选择列表的ID,看看是否有效.

要获得更好的答案,您还应该发布视图标记的相关部分.