0

次のエラーの理由を知りたいです。お役に立てれば幸いです。

エラーは次のとおりです。

Procedure or function 'Sp_Informacion_gral_Cliente' expects parameter '@Cod_Medico', which was not supplied.

ブラウザに入力した URL:

http://localhost:2731/Api/Usuario/0000986

ApiAreaRegistration の MapRoute:

context.MapRoute(
                "DetailClientes",
                "Api/Usuario/{Detail}",
                new
                {
                    controller = "Usuario",
                    action = "Detail"
                }
            );

コントローラーの方法:

 [HttpGet]
        public JsonResult Detail(string codigo)
        {
            return Json(clientesManager.ObtenerClienteDetallado(codigo),
                        JsonRequestBehavior.AllowGet);
        }

そして、おそらくエラーが発生する方法:

public List<ClienteDetallado> ObtenerClienteDetallado(string cliente)
        {
            List<ClienteDetallado> lista = new List<ClienteDetallado>();

            SqlConnection con = new SqlConnection(cadenaConexionVM);

            con.Open();

            SqlCommand cmd = new SqlCommand("Sp_Informacion_gral_Cliente", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@Cod_Medico", SqlDbType.NChar).Value = cliente;

            SqlDataReader reader =
                cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

            while (reader.Read())
            {
                ClienteDetallado cli = new ClienteDetallado();

                cli = new ClienteDetallado();
                cli.Cod_Medico = reader.GetInt32(0);
                cli.Nombre = reader.GetString(1);
                cli.Apellido = reader.GetString(3);
                cli.Fecha_Nacimiento = reader.GetString(4);
                cli.Lugar_Nacimiento= reader.GetString(5);
                cli.celular= reader.GetString(6);
                cli.tel_ofic= reader.GetString(7);
                cli.Estilo_De_Conducta = reader.GetString(8);
                cli.pasatiempos= reader.GetString(9);
                cli.Membresías_Grupos_Asc= reader.GetString(10);
                cli.Especialidad= reader.GetString(11);
                cli.Facultad_Medicina= reader.GetString(12);
                cli.Lugar_Donde_Obtuvo_Especialidad= reader.GetString(13);
                cli.Tiempo_Ejerciendo_Especialidad= reader.GetString(14);
                cli.Lugar_Donde_Labora = reader.GetString(15);
                cli.Direccion_CS_Labora= reader.GetString(16);
                cli.Direccion_Consultorio = reader.GetString(17);
                cli.Horario_Labor= reader.GetString(18);
                cli.Lugar_prefiere_recibir_Visitadores_Médicos= reader.GetString(19);
                cli.Productos_que_Receta_actualmente= reader.GetString(20);
                cli.Potencial_de_receta_actual= reader.GetString(21);
                cli.Costo_Promedio_Consulta= reader.GetString(22);


                lista.Add(cli);
            }

            reader.Close();

            return lista;
        }
4

1 に答える 1

0

コントローラーと一致するように、予想されるデータ名を一致させてみてください。したがって、ルートは次のようになります。

context.MapRoute(
            "DetailClientes",
            "Api/Usuario/{codigo}",
            new
            {
                controller = "Usuario",
                action = "Detail"
            }
        );

ストアド プロシージャは、存在すると予想される「string cliente」から値を取得していません。

于 2012-08-14T02:42:25.697 に答える