[英]The update function doesn't work, SQL Server and ASP.NET MVC 5
I have to update a table but it doesn't do anything.我必须更新一个表,但它没有做任何事情。 In the view for edit my values, it "works", but when I click to submit changes, it doesn't change any values in the data base.在编辑我的值的视图中,它“工作”,但是当我单击提交更改时,它不会更改数据库中的任何值。 I'm really stuck, I check this files but I can't see where the problem is.我真的被卡住了,我检查了这些文件,但我看不出问题出在哪里。
This is my.cs file这是 my.cs 文件
public void update(Propietario objPropietario)
{
try
{
comando = new SqlCommand("spEditarPropietario", objConexion.getConexion());
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.AddWithValue("@id", objPropietario.IdPropietario);
comando.Parameters.AddWithValue("@Nombre", objPropietario.Nombre);
comando.Parameters.AddWithValue("@IdTipoDocumento", objPropietario.TipoDocumento);
comando.Parameters.AddWithValue("@ValorDocumento", objPropietario.ValorDocumentoId);
objConexion.getConexion().Open();
comando.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
objConexion.getConexion().Close();
objConexion.cerrarConexion();
}
}
The table:桌子:
CREATE TABLE [dbo].[Propietario]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[IdTipoDocumento] [int] NOT NULL,
[Nombre] [varchar](100) NOT NULL,
[ValorDocumento] [varchar](30) NULL,
CONSTRAINT [PK_Propietario]
PRIMARY KEY CLUSTERED ([ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Propietario] WITH CHECK
ADD CONSTRAINT [FK_Propietario_TipoDocumentoId]
FOREIGN KEY([IdTipoDocumento]) REFERENCES [dbo].[TipoDocumentoId] ([ID])
GO
ALTER TABLE [dbo].[Propietario] CHECK CONSTRAINT [FK_Propietario_TipoDocumentoId]
GO
This is the stored procedure that I'm using:这是我正在使用的存储过程:
CREATE PROCEDURE spEditarPropietario
(@id int,
@Nombre VARCHAR(100),
@IdTipoDocumento int,
@ValorDocumento VARCHAR(30))
AS
BEGIN
UPDATE [dbo].Propietario
SET Nombre = @Nombre,
IdTipoDocumento = @IdTipoDocumento,
ValorDocumento = @ValorDocumento
WHERE ID = @id
END
This is my controller:这是我的 controller:
[HttpGet]
public ActionResult Update(int ID)
{
Propietario objpropietario = new Propietario(ID);
objetoPropietario.find(objpropietario);
return View(objpropietario);
}
[HttpPost]
public ActionResult Update(Propietario objpropietario)
{
objetoPropietario.update(objpropietario);
return RedirectToAction("Inicio");
}
I have this find method and it works well.我有这种查找方法,并且效果很好。
public bool find(Propietario objpropietario)
{
bool hayRegistros;
try
{
comando = new SqlCommand("spVerPropietario",
objConexion.getConexion());
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.AddWithValue("@ID",
objpropietario.IdPropietario);
objConexion.getConexion().Open();
SqlDataReader read = comando.ExecuteReader();
hayRegistros = read.Read();
if (hayRegistros)
{
objpropietario.IdPropietario =
Convert.ToInt32(read[0].ToString());
objpropietario.Nombre = read[1].ToString();
objpropietario.TipoDocumento =
Convert.ToInt32(read[2].ToString());
objpropietario.ValorDocumentoId = read[3].ToString();
objpropietario.EstadoError = 99;
}
else
{
objpropietario.EstadoError = 1;
}
}
catch (Exception)
{
throw;
}
finally
{
objConexion.getConexion().Close();
objConexion.cerrarConexion();
}
return hayRegistros;
}
This is the stored procedure:这是存储过程:
CREATE PROCEDURE spVerPropietario
(@ID int)
AS
BEGIN
SELECT ID, Nombre, IdTipoDocumento, ValorDocumento
FROM [dbo].Propietario
WHERE ID = @ID
END
I fixed adding a new parameter of the id, to the Update method in controller, because the object changes the id to 0, that's why it didn't work.我修复了在 controller 的 Update 方法中添加一个新的 id 参数,因为 object 将 id 更改为 0,这就是它不起作用的原因。 The solution:解决方案:
public ActionResult Update(Propietario objpropietario, int ID)
{
objpropietario.IdPropietario = ID;
objetoPropietario.update(objpropietario);
//return Content(obj.propietario.Nombre
//return View(objpropietario);
return RedirectToAction("Inicio");
}
Only with that, it works fine.只有这样,它才能正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.