我正在设计一个网站,并试图与关闭或打开的javascript兼容.
我有一个名为以下的控制器动作…
public RedirectToRouteResult AddWorkAssignment(int id)
{
// delegate the work to add the work assignment...
return RedirectToAction("Index","Assignment");
}
和我的jQuery我做一个帖子
$('#someButton').click(function() {
var id = $('#whereTheIDIs').val();
$.post('/Assignment/AddWorkAssignment/' + id);
return false;
});
但是控制器上的RedirectToAction会做到这一点….如何停止重定向发生,或者如何构造控制器和页面来处理此问题,因为我希望在关闭javascript的情况下进行重定向.
最佳答案
将您的控制器更改为如下所示:
public ActionResult AddWorkAssignment(int id)
{
// do work to add the work assignment....
if (Request.IsAjaxRequest())
return Json(true);
return RedirectToAction("Index","Assignment");
}
您也可以创建自己的过滤器属性…非常类似于AcceptVerbs属性.
高温处理
查尔斯
编辑:AjaxRequest ActionMethodSelectorAttribute属性
从here开始
public class AjaxRequest : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext,System.Reflection.MethodInfo methodInfo)
{
if (controllerContext == null)
throw new ArgumentNullException("controllerContext");
return controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
然后您的控制器:
public RedirectToRouteResult AddWorkAssignment(int id)
{
// do work to add the work assignment....
return RedirectToAction("Index","Assignment");
}
[AjaxRequest]
public JsonResult AddWorkAssignment(int id)
{
// do work to add the work assignment....
return Json(true);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。