当前位置:编程学习 > C#/ASP.NET >>

比较怪异的数据类型转换问题

问题表现很简单,我在.aspx.cs中声明了一个protected的string类型变量并赋值,然后使用了Page.DataBind()用于绑定变量显示。
在.aspx中有一个repeater,在repeater的itemtemplate中把这个string转为整数并显示,如果用Convert.ToInt16就可以正常显示,没有问题,但如果用int.Parse就会提示值不能为空,但其实这个string肯定是有值的。 --------------------编程问答--------------------  Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。

如果能确保传递的字符串为整形数字字符串,int.Parse是不会 有问题的,如果格式非法,需要异常处理 --------------------编程问答--------------------
int reValue;
            int.TryParse("", out reValue);
            Console.WriteLine(reValue);//输出0
--------------------编程问答-------------------- 我还是贴代码吧,这样更直观些,呵呵。我觉得还是要再强调一次,肯定有值!

<asp:Repeater ID="LeftMenu" runat="server">
<ItemTemplate>
<li class="clearfix" ><a href="event.aspx?classid=<%#Eval("ClassID") %>">
<%#int.Parse(classid)%>报错
<%#Convert.ToInt16(classid)%>不报错,显示为数据库实际值:1
<%#classid%>//显示为数据库实际值:1
</a></li>
</ItemTemplate>
</asp:Repeater>
--------------------编程问答-------------------- 如果把int.Parse放到repeater外面,就会正常显示。如:<%=int.Parse(classid) %>,感觉和repeater的事件顺序及page的加载顺序有关,具体原因还是不清楚。 --------------------编程问答-------------------- 2种转换,原理不一样,一种是强制转换,一种是运算符重载,我觉得是这么回事,运算符重载的,应该代码处理了异常,所以不报错。 --------------------编程问答-------------------- <%#int.Parse(Eval("classid").ToString())%> --------------------编程问答-------------------- 试过了,不行。发完贴子后我也以为是数据类型的问题,因为int.Parse接受的string类型的,但实际测试还是不行,会报错。 --------------------编程问答--------------------
<asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <p><%#Eval("Key") %></p>
           <p> <%#testid %> ,<%#int.Parse(testid) %> ,<%# Convert.ToInt32(testid) %></p>
        </ItemTemplate>

    </asp:Repeater>

 protected string testid = "1";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Dictionary<string, string> list = new Dictionary<string, string>();
            list.Add("sss", "sss");
            list.Add("dd", "sss");
            Repeater1.DataSource = list;
            Repeater1.DataBind();
        }
    }

没有发现任何问题,怀疑楼主数据库存的是不是浮点数,int.parse浮点数会出错的。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,