ASP MVC DropDownList的错误"转换成键入" [英] ASP MVC DropDownList error "Converting to Type"

查看:136
本文介绍了ASP MVC DropDownList的错误"转换成键入"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个int类型2字段的表即StatusID和typeid的。 typeid的正常工作,但StatusID返回一个错误。这里是我的控制器是什么样子:

 的[AcceptVerbs(HttpVerbs.Post)
公众的ActionResult创建(工程项目)
{

变种DB =新的DB();

如果(ModelState.IsValid)
{


{
db.Projects.InsertOnSubmit(项目);
db.SubmitChanges();

返回RedirectToAction(「指数」);
}

{
返回查看(项目);
}
}


计算机[状态] =从C在db.Status
选择新SelectListItem
{
=文本c.Text,
值= c.StatusID.ToString()
};

计算机[型] =从吨db.Project_Types
选择新SelectListItem
{
文本= t.Text,
值= T .TypeID.ToString()
};
返回查看(项目);
}



我得到的错误是:




消息=参数转换,从类型'System.String'输入'ConstructionProject.Models.Status'失败,因为没有能够类型转换器这些类型之间的转换。




但就像我说的,对于场TYPEID和StatusID数据库模型是相同的。



编辑:



DB模式:



表项目

 专案编号INT 
TYPEID INT
StatusID INT
名称VARCHAR(50)
说明文字
dateCreated会日期时间
ClientID的INT
者INT

表状态

  StatusID INT 
文本VARCHAR(50)

表格项目类型

  TYPEID INT 
文本VARCHAR(50)

任何人都知道什么会纠正这里的问题



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

 < p> 
<标签=状态>状态:其中,/标签>
<%= Html.DropDownList(StatusID)%>
将;%= Html.ValidationMessage(StatusID,*)%>
< / P>
< P>
<标签=类型>类型:LT; /标签>
<%= Html.DropDownList(类型)%GT;
将;%= Html.ValidationMessage(类型,*)%>
< / P>


解决方案

下面是一个在黑暗中拍摄:在你看来,你给的状态选择列表中的状态,其中,当您发布一组表格数据,使默认的形式集合映射尝试选择的值转换为列表(这是一个字符串版本的ID您INT StatusID)成ConstructionProject.Models.Status的对象的,它失败。尝试使用StatusID为您选择列表中的ID,看看是否可行。



有关更好的答案,你应该张贴您的视图标记的相关部分也是如此。


Hey, I have a table with 2 fields of type int which are "StatusID" and "TypeID". TypeID works correctly but StatusID returns an error. Here's what my controller looks like:

[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);
}

The error I get is:

Message = "The parameter conversion from type 'System.String' to type 'ConstructionProject.Models.Status' failed because no TypeConverter can convert between these types."

But like I said, the database model for the field "TypeID" and "StatusID" are identical.

Edit:

DB Schema:

Table Project

ProjectID   int
TypeID      int
StatusID    int
Name        varchar(50)
Description text
DateCreated datetime
ClientID    int
Contractor  int

Table Status

StatusID    int
Text        varchar(50)

Table Project Type

TypeID      int
Text        varchar(50)

Anyone knows what would correct the issue here?

My View Page (after changing to 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>

解决方案

Here's a shot in the dark: in your view, you've given the Status select list an ID of "Status", which, when you post a set of form data, causes the default form collection mapping to try to convert the selected value for the list (which is a string version of your int StatusID) into a ConstructionProject.Models.Status object, which fails. Try using "StatusID" for the ID of your select list and see if that works.

For better answers, you should post the relevant parts of your view markup as well.

这篇关于ASP MVC DropDownList的错误&QUOT;转换成键入&QUOT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆