将多种操作方法连接到一个视图

时间:2019-09-09 15:17:11

标签: c# asp.net-mvc

我面临的问题是,当单击删除链接并调用我的delete actionResult时,它错误地提示没有删除视图。我尝试设置ActionName(“ Index”),但随后收到有关View Index的模糊错误消息。

 public ActionResult Index()
        {
            ***code goes here****

            return View(viewModel);
        }

        [HttpPost, ActionName("Index")]
        [OnAction(ButtonName = "Create")]
        public ActionResult Index(***code goes here***)
        {

            ***code goes here****


            return RedirectToAction("Index");
        }

        //GET:
        public ActionResult Delete(int? id)
        {
            ***code goes here****

            return View(lansing);
        }

        //POST:
        [HttpPost, ActionName("Index")]
        [OnAction(ButtonName = "Delete")]
        //[ValidateAntiForgeryToken]
        public ActionResult Delete(int id)
        {
            ***code goes here****

            return RedirectToAction("Index");
        }

然后我有一个表,该表使用用户输入的信息进行更新,并且当从表中单击由这两个ActionResult处理的表中的actionLink时,该信息也会删除。

2 个答案:

答案 0 :(得分:0)

您可以通过将视图名称作为第一个参数传递给view方法的调用来指定要渲染的视图(请参见ASP.NETASP.NET Core的文档)。 / p>

但是由于通常使用HTTP GET Delete方法向用户显示要删除的元素并提示用户确认删除(请参见此ASP.NET Core tutorial),因此您可能想为该视图添加专用视图它。

答案 1 :(得分:0)

我面临的问题的解决方案是实际上在Get Delete方法内部执行Delete Post的操作,因为在创建,编辑和删除中都使用了一个视图。

最终结果如下:

  public ActionResult Delete(int? id)
        {
            ***code goes here****

           var lansing = db.LansingMileages.Find(id);
            viewModel.Records = new[]
            {
                lansing
            };

            db.LansingMileages.Remove(lansing);
            db.SaveChanges();
            return RedirectToAction("Index");
        }