Как остановить MVC RedirectToRouteResult JavaScript? - PullRequest
3 голосов
/ 04 августа 2009

Я разрабатываю сайт и пытаюсь быть совместимым с отключенным или включенным 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 включен выкл.

1 Ответ

3 голосов
/ 04 августа 2009

Измените свой контроллер на что-то вроде этого:

public ActionResult AddWorkAssignment(int id)
{
    // do work to add the work assignment....

    if (Request.IsAjaxRequest())
        return Json(true);

    return RedirectToAction("Index", "Assignment");
}

Вы также можете создать свой собственный атрибут фильтра ... так же, как атрибут AcceptVerbs.

HTHS
Charles

РЕДАКТИРОВАТЬ: Атрибут AjaxRequest ActionMethodSelectorAttribute

Кикстарт из здесь

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...