存储在 EDIT 菜单中显示的值并将其作为参数传递

Posted

技术标签:

【中文标题】存储在 EDIT 菜单中显示的值并将其作为参数传递【英文标题】:Store the value displayed in the EDIT menu and pass it as a parameter 【发布时间】:2021-05-21 08:07:31 【问题描述】:

我正在使用视图网格(MVC ASP.NET 和 C#),每次我为特定行单击 EDIT BUTTON 时,所有这些信息都会显示在不同的页面中,然后,我可以修改我想要的任何内容并保存更改。

问题是我想存储最初出现在编辑页面中的值以及新值,因为我想触发存储过程并将所有值作为参数传递(旧值和新值) .你明白我的意思吗? 举个例子:

这是我的控制器代码:

public ActionResult Edit(int id)
        
            User user = dbContext.GetUserById(id);
            return View(user);
        

        // POST: User/Edit/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(int id, [Bind] User user)
        
            try
            
                if (ModelState.IsValid)
                
                    dbContext.UpdateUser(user);
                    return RedirectToAction("Index");
                

                return View(dbContext);
            
            catch
            
                return View();
            
        

这就是我的 UpdateUser 函数的作用:

public void UpdateUser(User User)

    using (SqlConnection con = new SqlConnection(connectionString))
    
        SqlCommand cmd = new SqlCommand("UPDATE_USER", con)
        
            CommandType = System.Data.CommandType.StoredProcedure
        ;

        cmd.Parameters.AddWithValue("@NAME", user.NAME);
        cmd.Parameters.AddWithValue("@LASTNAME", user.LASTNAME);
        cmd.Parameters.AddWithValue("@CODE", user.CODE);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    



编辑: 这是我的存储过程:

CREATE PROCEDURE UPDATE_USER
(
    @NAME varchar(255) = '',
    @LASTNAME varchar(255) = '',
    @CODE varchar(255) = '',
)
AS
BEGIN
    UPDATE MAPPINGTABLE
    SET NAME= @NAME,
    LASTNAME= @LASTNAME,
    CODE= @CODE
    WHERE CODE= @CODE;
END
GO

我想传递所有以前单击编辑时出现的值,我的意思是:我应该创建 3 个新参数,称为: OLD_NAME、OLD_LASTNAME、OLD_CODE。

【问题讨论】:

【参考方案1】:

将所有值作为参数传递(旧的和新的)

虽然您需要存储过程中的旧值,但您可以在更新新值之前进行查询,而无需从控制器传递旧值。

【讨论】:

嗨,伙计,你好吗?对不起,我不完全理解你的观点。可以举个例子吗? 如果我理解正确的话。您需要存储过程中的旧值。如果是这样,那么您可以添加查询 SELECT * FROM User Where ID = Your_Edit_ID 并将其值存储到 SQL 变量中。现在,您拥有旧值(由 db 查询获取)和新值(您已经从代码中传递 每次我点击编辑按钮时,我都会看到一个可以修改数据的视图,然后点击保存,它会在数据库中更新。 (我正在触发一个存储过程)。所以,在这种情况下,我正在传递新值但是我想传递一些以前在我第一次单击编辑按钮时出现的值,你明白吗? 我应该在哪里使用您的查询?我现在有点迷路了:/ 您需要将查询写入您的 UPDATE_USER 存储过程。并分享您对旧价值观的目的。【参考方案2】:
public ActionResult Edit(int id = 0)
    

        var Details = new ModelClass()
        
            ModelClass = db.tablename.Where(a => a.id== id).ToList()

           
        ;
        return View("Method name", Details );

        
    

并且在 MVC 视图中你的编辑按钮必须是

@html.ActionLink("Edit", "Edit", new  id = item.id) |

【讨论】:

您好,谢谢您的回复!。这实际上在做什么?

以上是关于存储在 EDIT 菜单中显示的值并将其作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AJAX 将数据从视图传递到控制器

我作为路由参数传递的模型未被读取(Laravel)

如何将临时表作为参数传递到单独的存储过程中

使用 vba 在访问查询中传递参数值

如何将存储的值作为列号参数传递以在 awk 中进行编辑?

如何将 java 类名作为参数传递并将其用作方法中的强制转换