[英]Asp.NET MVC : Error while trying to call delete controller method
Here is a portion of my razor code 这是我的剃须刀代码的一部分
@using (Ajax.BeginForm("DeleteBeacon", "Beacons", new { beaconId = Model.ID, instId = Model.InstID, pageNo = (int)ViewBag.pageNumber }, new AjaxOptions { LoadingElementId = "imgloaderIndex", OnSuccess = "OnSuccessDelete(data)", OnFailure = "OnFailureDelete(data)" }))
Here is my controller code: 这是我的控制器代码:
public ActionResult DeleteBeacon(UserProfile userInfo, long beaconId, long instId, int? pageNo)
{
bool status = false;
int pNumber = (pageNo ?? 1);
ViewBag.pageNumber = pNumber;
try
{
status = blBeacon.DeleteBeacon(beaconId, userInfo.UserID, userInfo.SessionToken, null);
if (status)
{
return Json(new { status = "success", pageNumber = pageNo, instId = Convert.ToInt64(TempData["InstituteId"]) });
}
else
{
return Json(new { status = "failure" });
}
}
catch (Exception exp)
{
LogUtil.Error("BeaconsController\\DeleteBeacon:\n" + exp.Message);
return Json(new { status = "failure", message = exp.Message });
}
}
It works fine in local server , but when hosted on production server, I'm getting error while trying to delete. 它在本地服务器上工作正常,但是在生产服务器上托管时,尝试删除时出现错误。 Error is
错误是
POST https://portal.example.com/Beacons/DeleteBeacon?beaconId=36&instId=9594&pageNo=2 500 (Internal Server Error)
Uncaught ReferenceError: data is not defined
UPDATE: i dug a bit deeper and it shows data is not defined in OnFailureDelete(data)
which means the POST call is failing but why ?? 更新:我更深入地挖掘了一下,它显示
data is not defined in OnFailureDelete(data)
,这意味着POST调用失败了,为什么?
can any one suggest what may be wrong 任何人都可以建议出什么问题吗
I'm sure you don't need to pass data
in the OnSuccess and OnFailure calls. 我确定您不需要在OnSuccess和OnFailure调用中传递
data
。
... { LoadingElementId = "imgloaderIndex", OnSuccess = "OnSuccessDelete", OnFailure = "OnFailureDeleteenter code here"
The JavaScript for those should have data
declared though eg: 那些JavaScript应当通过以下方式声明
data
:
function OnSuccessDelete(data) { //... }
EDIT: 编辑:
I'm unable to replicate your issue. 我无法复制您的问题。 However, here is my working example code, in the hope that it might be of some use to you:
但是,这是我的示例代码,希望对您有所帮助:
Controller 控制者
[HttpPost]
public ActionResult DeleteBeacon(object beaconid, object instid, int pageno)
{
return Json(new { result = "Hello" });
}
View 视图
@using (Ajax.BeginForm("DeleteBeacon", "Home", new { beaconId = 1, instId = 2, pageNo = 3 }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "OnSuccessDelete", OnFailure = "OnFailureDelete" }))
{
<input type="submit" value="Click Me"/>
}
<script type="text/javascript">
function OnSuccessDelete(data) {
console.log(data);
}
function OnFailureDelete(data) {
console.log("Failure " + data);
}
</script>
To call OnFailureDelete()
you must set the response status to code to something other than 200 eg 要调用
OnFailureDelete()
,必须将响应状态设置为200以外的其他代码,例如
[HttpPost]
public ActionResult DeleteBeacon(object beaconid, object instid, int pageno)
{
Response.StatusCode = 500;
return Json(new { result = "Hello" });
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.