Asp.net mvc MVC重定向操作未按预期工作

Asp.net mvc MVC重定向操作未按预期工作,asp.net-mvc,Asp.net Mvc,我有一个包含以下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 S

我有一个包含以下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方法被调用并成功执行,重定向除外。没有重定向发生。StudyList方法(具有授权属性)从未被调用。我做错什么了吗?

你需要改变

RedirectToAction("StudyList");

不过,我建议您将删除操作设置为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
}
你需要改变

RedirectToAction("StudyList");

不过,我建议您将删除操作设置为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
}

您显示的代码中没有任何内容表明它不应该工作。但是,删除操作实际上应该是一个POST,而不是GET(您不希望将其添加到浏览器历史记录中或允许用户在地址栏中输入它。充其量它只是进行不必要的调用以删除不再存在的内容,最坏情况下可能会根据您的代码引发异常)实际上有一个错误-应该是
return RedirectToAction(“StudyList”)即使搜索引擎在索引时也可以删除您的数据(如果没有)wrong@StephenMuecke-你是对的,这是有效的。如果你把这封信写在回信里,我会接受的。我可能还会根据注释更改代码。您显示的代码中没有任何内容表明它不应该工作。但是,删除操作实际上应该是一个POST,而不是GET(您不希望将其添加到浏览器历史记录中或允许用户在地址栏中输入它。充其量它只是进行不必要的调用以删除不再存在的内容,最坏情况下可能会根据您的代码引发异常)实际上有一个错误-应该是
return RedirectToAction(“StudyList”)即使搜索引擎在索引时也可以删除您的数据(如果没有)wrong@StephenMuecke-你是对的,这是有效的。如果你把这封信写在回信里,我会接受的。我还可能会根据注释更改代码。它需要是public ActionResult deletestudio(…)它需要是public ActionResult deletestudio(…)
[HttpPost]
[Authorize]
[ValidateAntiForgeryToken]
public ActionResult DeleteStudy(string topic, string subtopic)