こんにちは私はAjax+MVCを学んでいます。コントローラーがajax対応のRedirect()を自動的に処理するのがいいと思いました。少し掘り下げた後、私はこのリンクからコードを見つけました。以下のコードはユーザーに対して完全に透過的です。ユーザーは通常の呼び出しとajax呼び出しの違いを気にすることなく、Redirect(someUrlString)を呼び出すことができます。とてもすっきりとクールになります。
public abstract class BaseController : System.Web.Mvc.Controller {
//turn into ajax aware redirect
protected override RedirectResult Redirect(string url) {
return new AjaxAwareRedirectResult(url);
}
}
と ...
public class AjaxAwareRedirectResult : RedirectResult {
public AjaxAwareRedirectResult(string url) : base(url) { }
public override void ExecuteResult(ControllerContext context) {
if (context.RequestContext.HttpContext.Request.IsAjaxRequest()) {
string desturl = UrlHelper.GenerateContentUrl(Url, context.HttpContext);
JavaScriptResult result = new JavaScriptResult() {
Script = "window.location='" + desturl + "';" };
result.ExecuteResult(context);
}
else { base.ExecuteResult(context); }
}
}
ただし、完全ではありません。課題は次のとおりです。
RedirectToRouteResult RedirectToAction
(ActionResult結果)
まだありません(特にT4MVCに非常に便利です)。
私はまだMVCに慣れていないので、試しましたが、これを自分で書く方法を十分に理解するのに十分な知識がありません。専門家の誰かがこれを手伝ってくれませんか?だから私はあなたのコードからそれを学ぶことができますか?どうもありがとうございます。