ASP.NET - Crud que no graba nuevos registros

   
Vista:
Imágen de perfil de Jhon

Crud que no graba nuevos registros

Publicado por Jhon (15 intervenciones) el 08/10/2017 04:50:47
Hola, uso Visual Studio 2015, Sql 2012, Sql Management Studio. Este Crud de internet me elimina y me edita pero no me graba nuevos registros, hace mucho no programo, ¿me podrían decir por qué?

Vista
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@model CRUDinMVC.Models.StudentModel
 
@using (Html.BeginForm())
{
    <div class="form-horizontal">
        <h4>StudentModel</h4>
        <hr />
        @Html.ValidationSummary(true, "", new {@class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name, new {htmlAttributes = new {@class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.City, htmlAttributes: new { @class = "contol-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.City, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.City, "", new { @class = "text-danger"})
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control"} })
                @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger"})
            </div>
        </div>
 
        <div class="form-group">
            <div class = "col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
        <h3>@ViewBag.Message</h3>
    </div>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>
<script src="~/scripts/jquery-1.10.2.min.js"></script>
<script src="~/scripts/jquery.validate.min.js"></script>
<script src="~/scripts/jquery.validate.unobtrusive.min.js"></script>

Controlador
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// POST: Student/Create
[HttpPost]
public ActionResult Create(StudentModel smodel)
{
    try
    {
        if(ModelState.IsValid)
        {
            StudentDBHandle sdb = new StudentDBHandle();
            if(sdb.AddStudent(smodel))
            {
                ViewBag.Message = "Student Details Added Successfully";
                ModelState.Clear();
            }
        }
        return View();
    }
    catch
    {
        return View();
    }
}


Procedimiento almacenado
AddNewStudent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
USE [StudenDB]
GO
/****** Object:  StoredProcedure [dbo].[AddNewStudent]    Script Date: 02/10/2017 7:13:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[AddNewStudent]
	@id int,
	@Name nvarchar(50),
	@City nvarchar(50),
	@Address nvarchar(50)
 
as
begin
insert into dbo.StudentReg values (@id, @Name, @City, @Address)
End
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Wilfredo Patricio Castillo

Crud que no graba nuevos registros

Verifica si llegan los datos al controller.
Luego verifica si entra en el IsValid, sino, quita el isValid temporalmente para probar.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon

Crud que no graba nuevos registros

Publicado por Jhon (15 intervenciones) el 09/10/2017 17:56:57
Sí ingresa en los create, quité el IsValid, pero aún no graba registros.

Le envié el programa al correo para que lo pueda manipular.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Crud que no graba nuevos registros

Has cometido un error muy ingenuo.

Tu tabla students, tiene el campo ID, que es identity, y en tu store procedure tienes definido, el parámetro @id, el cual no lo estás pasando, y por consiguiente al no pasarle nada en ese parámetro, genera un error, y como no estás atrapando errores, no sabías de que era.

Solución: elimina en el store procedure, el @id

Así debe quedar tu store procedure

1
2
3
4
5
6
7
8
9
ALTER Procedure [dbo].[AddNewStudent]
	@Name nvarchar(50),
	@City nvarchar(50),
	@Address nvarchar(50)
 
as
begin
insert into dbo.StudentReg values (@Name, @City, @Address)
end

Con eso todo irá bien.

Otra cosa, porqué no usas Entity Framework y te olvidas de esos problemas?.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon

Crud que no graba nuevos registros

Publicado por Jhon (15 intervenciones) el 09/10/2017 21:50:34
Gracias, funcionó!!

Con Entity framework? quieres decir diciéndole al Visual Studio donde está la base de datos y dejando que él haga todo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon

Crud que no graba nuevos registros

Publicado por Jhon (15 intervenciones) el 09/10/2017 22:24:07
Para saber los errores qué le pongo? un try catch? cómo quedaría entonces?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Crud que no graba nuevos registros

Si deberías tener un try catch, pero funcionando.

He visto que tienes un try catch, pero en el catch no pones nada por consiguiente el programa sigue de largo y no sabes que pasó, o si ocurrió una excepción o no.

Fue así que pude determinar cual era tu error.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Crud que no graba nuevos registros

Pues si, entity framework, es un ORM, el cual te mapea cada tabla en una entidad y todo funciona orientado a objetos.

Con eso te ahorra todo el trabajo, de hacer el modelo, luego los stores procedure y todo lo demás que tienes hecho, con EF, solo te centras en la lógica del negocio.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad