Дополнительная информация: Невозможно неявно преобразовать тип 'void' в 'object' asp.net MVC 5 - PullRequest
0 голосов
/ 09 сентября 2018

Я использую в цикле один foreach, а другой for loop. Цикл Foreach, используемый для system.Data и for 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'", пожалуйста, помогите мне разобраться с этой проблемой. дайте мне знать, если нужна дополнительная информация.

1 Ответ

0 голосов
/ 09 сентября 2018

У вас проблема со следующей строкой:

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

Метод обновления ничего не возвращает.

Кроме того, рекомендуется переносить код с использованием блоков.

Обновление:

Вам действительно не нужно:

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");
...