私のビューには次のjqueryコードがあります
<script type="text/javascript">
$(document).ready(function () {
$("#dialog-confirm").dialog({
autoOpen: false,
modal: true,
resizable: false,
width: '500px'
});
$(".deleteLink").click(function (e) {
e.preventDefault();
var targetUrl = $(this).attr("href");
var dID = $(this).attr("id");
$("#dialog-confirm").dialog({
buttons: {
"Confirm": function () {
$.ajax({
url: '@Url.Action("DeleteSession")',
type: 'POST',
data: { id: dID },
success: function (data) {
window.location.herf = data.redirectToUrl;
}
});
},
"Cancel": function () {
$(this).dialog("close");
}
}
});
$("#dialog-confirm").dialog("open");
});
});
</script>
ダイアログボックスをトリガーするこのリンクは次のとおりです。
@Html.ActionLink("Delete", "", new { id = s.ID },new { @class = "deleteLink", id = s.ID})
コントローラメソッドは結果をDeleteSession
返しますJson
。
コントローラ:
[HttpPost]
public JsonResult DeleteSession(int id)
{
try
{
sRep.DeleteSession(id);
return Json(new {success = true, redirectToUrl = Url.Action("Index")});
}
catch (Exception e)
{
return Json(new {success = false, redirectToUrl = Url.Action("DisplayError", new { eerror =
"Unable to delete the course. " + "Internal error: " + e.Message})});
}
}
結果を調べましたが、Json
問題ないようです。唯一の問題はwindow.location.herf = data.redirectToUrl;
、機能しないことです。ページはリダイレクトされず、ダイアログボックスは引き続き画面に表示されます。
私が間違っていることは何ですか?