MVCアプリケーションでは、HTMLヘルパー機能を使用するグリッドがあります。 EditorTemplateの外観は次のとおりです。MVC:DELETE動詞を使用するとFFでは動作しますが、IEでは動作しません
<tr>
<td>
<%-- Ajax Delete --%>
<% if(Model.LeaveId > 0) { %>
<%: Html.DeleteEmployeeOtherLeave("Delete", Model)%>
<%} %>
</td>
<td><%: Model.LeaveType %></td>
<td><%: Model.MorningOnlyFlag %></td>
<td><%: Model.AfternoonOnlyFlag %></td>
<td><%: Model.DayAmount %></td>
<td><%: String.Format("{0:ddd MMM d yyyy}", Model.Date)%></td>
</tr>
HTMLヘルパーは次のようになります。
public static MvcHtmlString DeleteEmployeeOtherLeave(this HtmlHelper html, string linkText, Leave _leave)
{
return html.RouteLink(linkText, "Default",
new { _employeeOtherLeaveId = _leave.LeaveId, action = "Delete" },
new { onclick = "$.ajax({url: this.href, type: 'DELETE', success: function(result) {$('#wholepage').html(result);}}); return false;" }
}
コントローラは次のようになります。
[HttpGet]
[Authorize(Roles = "Administrator, AdminAccounts, ManagerAccounts")]
public ActionResult EmployeeAbsence()
{
if ((SessionObjects.AbsenceStartDate > DateTime.MinValue) && (SessionObjects.AbsenceEndDate > DateTime.MinValue))
if (SessionObjects.AbsenceSelectedEmployeeId == 0)
return View(new AbsenceViewModel()
{
AbsenceStartDate = SessionObjects.AbsenceStartDate,
AbsenceEndDate = SessionObjects.AbsenceEndDate
});
else
return View(new AbsenceViewModel(
SessionObjects.AbsenceStartDate,
SessionObjects.AbsenceEndDate,
SessionObjects.AbsenceSelectedEmployeeId
));
return View();
}
[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult Delete(int _employeeOtherLeaveId)
{
EmployeeOtherLeaf.Delete(_employeeOtherLeaveId);
return RedirectToAction("EmployeeAbsence");
}
#endregion
削除動詞の使用はFFでは機能しますが、IEでは機能しません。 DELETE動詞をPOSTに置き換えることは、まったく動作しないように思えます。これをIEで動作させるにはどうすればよいですか?
FYI: 'RedirectToAction'はXHRで期待通りに動作しません... –
IEではどうなりますか?間違いはありますか?リクエストが発生しますか?どのような種類ですか? –
エラーはSystem.Web.HttpExceptionでした:パブリックアクションメソッド 'Delete'がコントローラ 'SHP.Controllers.EmployeeController'に見つかりませんでした。 – arame3333