在 MVC 中填充我的模型时出错“指定的强制转换无效”
本文关键字:转换 无效 填充 MVC 我的 模型 出错 | 更新日期: 2023-09-27 18:30:24
我有这个模型
public class DocumentModel
{
public int documentID { get; set; }
public String Title { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DateCreated { get; set; }
public String Description { get; set; }
public int authorID { get; set; }
public String AuthorName { get; set; }
public int categoryID { get; set; }
public String Category { get; set; }
public int topicID { get; set; }
public String Topic { get; set; }
[AllowHtml]
public String DocumentBody { get; set; }
}
当我在mysql中进行查询后即将填充我的模型时,这是代码
result = from DataRow row in data.Rows
select new DocumentModel()
{
documentID = (int)row["document_id"],
Title = row["title"].ToString(),
DateCreated = (DateTime)row["date_created"],
Description = row["description"].ToString(),
AuthorName = row["AuthorName"].ToString(),
categoryID = (int)row["category"],
topicID = (int)row["topicID"]
};
我在类别 ID 和主题 ID 中出现错误,错误显示"指定的强制转换无效"。 我不知道我从哪里得到这个错误,我已经检查了所有数据类型是否正确,我确认它是否正确,你能给我建议吗? 我是否错过了一些错误实现的代码?
在我忘记这里是我的 MYsql 查询代码之前
select a.document_id,a.title,date(a.date_created) as date_created,a.Description,c.first_name as AuthorName,ifnull(e.category_ID, 0) as category, ifnull(d.ID,0) as TopicID from tbldocument a
Inner join tbldocumenttree b on a.document_ID = b.Document_ID
left join tblcategory e on b.category_id = e.category_id
Inner join tblauthor c on a.author_id = c.author_id
left join tbldocumenttree d on d.ID = b.parent
谢谢。
如果 row["category"](同样适用于 row["topicID"])在数据行中为 NULL,则可能会发生这种情况,因为您无法将 null 转换为不可为空的 int。我注意到你已经加入了你的tblCategory,因此NULL 是一个真正的可能性。
要么使用合并函数修复服务器(即强制任何 NULL 类别默认为 0),要么在尝试强制转换之前检查 row["category"]==DBNull.Value,或者确实使用 Int32.TryParse 并对类别 0 进行任何处理,等等。