2009-08-03 15 views
3

私はサイトを設計しており、javascriptの電源を切ったり切ったりして互換性を持たせようとしています。MVC RedirectToRouteResult 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がオフになっている場合に発生したいので、これを処理するためにコントローラとページをどのように構造化するのですか?

答えて

3
このような何かにあなたのコントローラーを変更し

:あなたはずっとAcceptVerbs属性のような...あまりにも独自のフィルタ属性を作成することができ

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

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

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

HTHS
チャールズ

EDIT: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); 
} 
関連する問題