【问题标题】:Additional information: Cannot implicitly convert type 'void' to 'object' asp.net MVC 5附加信息:无法将类型“void”隐式转换为“object”asp.net MVC 5
【发布时间】:2019-02-13 21:45:34
【问题描述】:

我用来循环一个是foreach,另一个是for loop。 Foreach 循环用于 system.Datafor loop 用于数组数据。我正在尝试匹配两个对象的属性如果匹配,则将值传递给我的 Oracle 过程以保存数据。这是我的代码:

foreach (System.Data.DataRow dz in ViewBag.MenuData2.Rows)
                {
                    ViewBag.comp = @dz["mnud_text"];

                    for (int i =0; i<data.Length;i++ )
                    {
                        if (ViewBag.comp == data[i])
                        {
                            if (@dz["chk"].ToString() == "0" || @dz["umnu_oid"].ToString() == "N")
                            {
                                 actv = "1";
                            }

                            string user_id = data[i];
                            ds = new DataSet();
                            ds = _clsDataAccess.update_menu_permission("00003", ViewBag.comp.ToString(), actv,"N", "00002");
                        }
                    }

                } 

程序是:

public void update_menu_permission(string user_id, string menu_id, string actv, string oid, string euser)
{
    conn = new OracleConnection(clsConnection.ConnectionSave);
    conn.Open();
    if (oid == "N")
    {
        strComm = "insert into thlhr.t_umnu (oid, umnu_mnud, umnu_user, umnu_actv, iuser, euser) values "
            + "(:oid, :umnu_mnud, :umnu_user, :umnu_actv, :iuser, :euser)";

        cmd = new OracleCommand(strComm, conn);
        cmd.Parameters.Add("oid", OracleType.VarChar).Value = "UMNU" + user_id.ToUpper() + menu_id.ToUpper();
        cmd.Parameters.Add("umnu_mnud", OracleType.VarChar).Value = menu_id;
        cmd.Parameters.Add("umnu_user", OracleType.VarChar).Value = user_id;
        cmd.Parameters.Add("umnu_actv", OracleType.VarChar).Value = actv;
        cmd.Parameters.Add("iuser", OracleType.VarChar).Value = euser;  
        cmd.Parameters.Add("euser", OracleType.VarChar).Value = euser; 
    }
    else
    {
        strComm = "update thlhr.t_umnu set umnu_actv = :umnu_actv, euser = :euser where oid ='" + oid + "'";

        cmd = new OracleCommand(strComm, conn);
        cmd.Parameters.Add("umnu_actv", OracleType.VarChar).Value = actv;
        cmd.Parameters.Add("euser", OracleType.VarChar).Value = euser;
    }
    cmd.ExecuteNonQuery();

    conn.Dispose();
    conn.Close();
}

当我传递值时,我遇到了这个错误"Additional information: Cannot implicitly convert type 'void' to 'object'",请帮我解决这个问题。让我知道是否需要更多信息。

【问题讨论】:

    标签: c# asp.net visual-studio-2015 oracle11g asp.net-mvc-5


    【解决方案1】:

    您对以下行有疑问:

    ds = _clsDataAccess.update_menu_permission("00003", ViewBag.comp.ToString(), actv,"N", "00002");
    

    更新方法不返回任何内容。

    此外,使用 using 块包装代码是一种很好的做法。

    更新:

    你真的不需要:

    ds = new DataSet();
    ds = _clsDataAccess.update_menu_permission("00003", ViewBag.comp.ToString(), actv,"N", "00002");
    

    只要打电话:

    _clsDataAccess.update_menu_permission("00003", ViewBag.comp.ToString(), actv,"N", "00002");
    

    【讨论】:

    • 感谢您的快速重播。你能为我解决这个问题吗?我为此浪费了很多时间。
    • ViewBag.comp.ToString() 我从这里得到的错误可能是
    • comp的返回类型是什么?
    • 嗨,@Gauravsa。我只是犯了一个小错误,我没有从代码中删除ds。现在它工作得很好。谢谢
    • 我正在尝试标记该问题,但我的声誉太低,无法标记它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2020-08-08
    • 2020-07-31
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    相关资源
    最近更新 更多