繁体   English   中英

MVC RedirectToAction无法按预期工作

[英]MVC RedirectToAction not working as expected

我的网页包含以下HTML:

   <div class="row">
        @Html.ActionLink("Delete Study", "DeleteStudy", "Study", new {topic = @Model.Study.PartitionKey, subtopic = @Model.Study.RowKey}, new { @class = "btn btn-primary" })
        @Html.ActionLink("View Studies", "StudyList", "Study", null, new { @class = "btn btn-primary" })    
    </div>

单击DeleteStudy链接时,将调用以下控制器方法:

    [Authorize]
    public void DeleteStudy(string topic, string subtopic)
    {
        ...
        ...
        RedirectToAction("StudyList");
    }

除重定向外,DeleteStudy方法将被调用并成功执行。 没有重定向发生。 永远不会调用StudyList方法(具有Authorization属性)。 难道我做错了什么?

你需要改变

RedirectToAction("StudyList");

return RedirectToAction("StudyList");

但是,我建议您将Delete操作设为POST而不是GET。 您不希望将其添加到浏览器历史记录中,也不希望用户在地址栏中输入它。 充其量只是在进行不必要的调用以删除不再存在的内容,而在最坏的情况下可能会引发异常,具体取决于您的代码

@using (Html.BeginForm("DeleteStudy", "Study", new {topic = Model.Study.PartitionKey, subtopic = Model.Study.RowKey }))
{
  @Html.AntiForgeryToken()
  <input type="submit" value="Delete Study" /> // style it to look like a link if that's what you want
}

并将方法更改为

[HttpPost]
[Authorize]
[ValidateAntiForgeryToken]
public ActionResult DeleteStudy(string topic, string subtopic)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM