期望未提供的参数

时间:2012-08-14 02:16:31

标签: rest stored-procedures parameters

我想知道以下错误的原因是什么。如果你能提供帮助,我将不胜感激。

错误是:

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

我在浏览器中输入的网址:

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

ApiAreaRegistration中的MapRoute:

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

Controller方法:

 [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;
        }

1 个答案:

答案 0 :(得分:0)

尝试匹配预期的数据名称以匹配您的控制器。所以你的路线如下所示。

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

您的存储过程未从'string cliente'获取它预期存在的值。