我正在设计一个网站,并尝试与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被转换时发生重定向关闭。
答案 0 :(得分:3)
将您的控制器更改为以下内容:
public ActionResult AddWorkAssignment(int id)
{
// do work to add the work assignment....
if (Request.IsAjaxRequest())
return Json(true);
return RedirectToAction("Index", "Assignment");
}
您也可以创建自己的过滤器属性......就像AcceptVerbs属性一样。
HTHS
查尔斯
编辑:AjaxRequest ActionMethodSelectorAttribute属性
来自here的Kickstart
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);
}