指定的类型转换无效

本文关键字:无效 类型转换 | 更新日期: 2023-09-27 18:08:33

我有一个布尔复选框,当我调试时,我得到指定的强制转换无效的错误。我做错了什么?

<input type="checkbox" name="spam"  <%if ((bool) ViewData["spam"])     Response.Write("checked"); %><%if (teststring.Length==0) Response.Write("disabled"); %>/> Check here if you want to receive junk mail (spam). 

谢谢

指定的类型转换无效

此错误意味着您设置的不是布尔值ViewData["spam"](甚至不设置它)。要处理这种情况,请编写下面的代码:

<input type="checkbox" name="spam"  
    <%if (ViewData["spam"] is bool && (bool) ViewData["spam"]) Response.Write("checked"); %>
    <%if (teststring.Length==0) Response.Write("disabled"); %>/> 
Check here if you want to receive junk mail (spam).

请记住,您必须手动设置ViewData["spam"]

尝试使用"Convert.ToBoolean(视讯系统["垃圾邮件"])"而不是bool)视讯系统("垃圾邮件")

如果您想将some value转换为specific typeincompatible,则会出现Casting error,例如,如果您想将abc转换为bool,则会出现throw exceptionexception的一个原因可能是ViewData["spam"]可以是null或包含boolean类型的not compatible值。你可以写

<input type="checkbox" name="spam"  <%if (ViewData["spam"]!=null && (bool) ViewData["spam"])     Response.Write("checked"); %><%if (teststring.Length==0) Response.Write("disabled"); %>/> Check here if you want to receive junk mail (spam).  

将布尔值放入视图数据中:

ViewData["spam"] = mypatient.spam;

或者检查字符串:

<%= ViewData["spam"].ToString() == "Y" ? "checked" : "" %>