清除 ASP.net 中的按钮名称参数

Posted

技术标签:

【中文标题】清除 ASP.net 中的按钮名称参数【英文标题】:Clear Button Name Parameter in ASP.net 【发布时间】:2016-04-19 09:35:49 【问题描述】:

嗨,我是 ASP 和 MVC3 的新手,我的问题是如何清除帖子中的按钮名称参数,因为每次单击带有按钮参数的按钮后刷新页面时,我最后一次单击的按钮的值仍然存在,有没有办法在提交后或刷新控制器中的页面或使用 Jquery 时清除这个东西?

谢谢

这是我的代码片段:

[HttpPost]
    public ActionResult HistoryPage(HistoryModel model, string btnAction)
    
        if (Session["HistoryId"] != null)
        
            switch (btnAction)
            
                case "Delete History":
                    DeleteHistory(model, ref deleteHistoryError, ref deleteHistorySucesss);
                    break;
                case "AddHistory":
                    AddHistory(model);
                    break;

            
        
        return View(model);
    

这里是删除历史记录

private static void DeleteHistory(HistoryModel model, ref string ErrorMessage, ref string SuccessMessage)
        

                    foreach (var item in model.HistoryIds)
                    
                        if (item != "")
                        
                            bool result = Int32.TryParse(item, out HistoryIds);
                            if (result)
                            
                                var History= db.History.Find(HistoryId);
                                bool HistoryExist = true;

                                if (History.HistoryId != null)
                                

                                    History.LogicalDelete = true;
                                    History.DateModified = DateTime.Now;
                                    db.SaveChanges();


                                    SuccessMessage = "History  successfully deleted";
                                
                                else 
                                
                                    ErrorMessage = "Unable to delete History.";
                                
                            
                        
                    
                    if (!string.IsNullOrWhiteSpace(ErrorMessage))
                    
                        SuccessMessage = String.Empty;
                    
                
            
        

我的表单下方的 Cshtml 按钮

<input type="submit" name="btnAction" class="btnMultiDelete button_example button_example_small div-bottom-3 w100Percent txtAlignLeft"
                                value="Delete History" id="btnDeleteHistory" />

【问题讨论】:

你如何将数据发布到这个控制器? @FrebinFrancis 抱歉,忘记包含 DeleteHistory 代码片段 向我们展示您的 cshtml 代码。 @ramiramilu 在我的cshtml中添加了按钮 @FrebinFrancis 更新问题 【参考方案1】:

在浏览器刷新时(单击 F5),浏览器发出最后一个请求(在您的情况下是 post)。这是浏览器的默认行为。

所以我们必须在这里遵循PRG 模式。 PRG - POST-REDIRECT-GET。所以在你的代码中而不是返回视图,你必须return RedirectToAction("Get Action Name")。在这种情况下,浏览器的最后一个请求将是 GET,当您进行后续刷新时,它将发出 GET 请求而不是 POST

你的代码应该是这样的 -

    [HttpPost]
    public ActionResult HistoryPage(HistoryModel model, string btnAction)
    
        if (Session["HistoryId"] != null)
        
            switch (btnAction)
            
                case "Delete History":
                    DeleteHistory(model, ref deleteHistoryError, ref deleteHistorySucesss);
                    break;
                case "AddHistory":
                    AddHistory(model);
                    break;
            
            return RedirectToAction("Get Action Name ...");
        
        return View(model);
    

【讨论】:

或者是否可以将return RedirectToAction("Get Action Name ...");添加到删除的私有函数中?它会覆盖return View(model) 不,这不是一个好习惯,为什么要在私有或业务方法中进行重定向?您必须在控制器操作中进行重定向。 刚刚看到我有条件如果DeleteHistory返回值是错误或成功,添加return RedirectionToAction如果成功,让我测试一下 是的,基于DeleteHistory 的返回值,您可以return View(model) 或重定向return RedirectToAction("Action name")

以上是关于清除 ASP.net 中的按钮名称参数的主要内容,如果未能解决你的问题,请参考以下文章

Jquery禁用Asp.net核心中的选定选项无法正常工作

asp.net 点击一下文件名或者一个下载按钮,将文件下载下来怎么做啊???

ASP.NE网站发布注意事项

win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NE

ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据

表单身份验证、ASP.NET MVC 和 WCF RESTful 服务