各位大虾 我在*.aspx.cs中调用*.cs中的方法 没有收到返回值 谢谢各位了

来源:百度知道 编辑:UC知道 时间:2024/05/02 00:17:19
各位大虾 我是刚接触C# 遇到这样一个问题:
我有一个添加页面 add.aspx ,这个页面上有一个确定添加的按钮,按钮的事件代码如下:
protected void confirm_Click(object sender, ImageClickEventArgs e)
{
string rolename = this.rolename.Text;
Roledao roledao = new Roledao();
string result = "";
result= roledao.Addrole(rolename);;///在这里设置了一个断点,命中条件是打印消息,不继续执行,消息内容是 {result}

}
然后里面那个roledao是我自己写的c#类,有一个啊addrole方法,执行插入记录的操作,addrole方法的代码如下:
if(roledbo.db_conn.State!=ConnectionState.Open){
roledbo.db_conn.Open();
}
//在添加角色前要检查数据库中是否已经有这个角色了
string procname = "addrole";
SqlCommand addrolecmd = new SqlCommand(procname,roledbo.db_conn);
addrolecmd.CommandType = CommandType.StoredProcedure;
addrolecmd.Parameters.Add(new SqlParameter("@rname",SqlDbType.VarChar,100));
addrolecmd.Parameters["@rname"].Value = rolename;

因为在你在 aspx.cs 中设置的断点的位置产生了这样的问题

1行: string result = "";
2行: result= roledao.Addrole(rolename);;///在这里设置了一个断点,命中条件是打印消息,不继续执行,消息内容是 {result}

你在第2行设置了断点并打印 result, 但这个时候 result 并没有得到方法 Addrole 返回的值, 因此打印出的 result 就是在第一行赋值的空字符串, 你可以随便加入一行代码(比如: int i = 100;)在第2行后面, 然后将2行上的断点和打印放到下面的一行int i = 100; 这样打印的时候 result 已经得到 Addrole 返回的值, 就可以正常的显示了

有问题我们再一起讨论, QQ:758769729

没明白在哪里没打印出来,是调试断点处result没有打印出来还是终端页面没有打印出来?

你调试的没问题,但是你调试的是try ,应该是有异常了,try的值作废,catch和finally 根本没重新赋值,所以才会出现打印不对的事情,如果你的那个returnresult一开始设置为“哈哈” 他还给你哈哈呢,好好看看异常吧。

addrolecmd.ExecuteNonQuery();
你的问题在这,数据库操作已执行,但你接收的时候弄错了,
应该这样写
addresult = addrolecmd.ExecuteNonQuery();