私はRedirectToAction
を知っていたので、URLをユーザーのために安定した状態に保ち、あるアクションから別のアクションに責任を引き継ぐようなものを探していました。"RewriteToAction"のようなものがありますか?
このトピックではzero Google resultsが見つかりましたので、私は完全にXY problemを解決しようとしている可能性があります。
まだ、私はなぜこれが必要かと思う理由を説明しようとします。
シナリオ:上記のコードで
public ActionResult A(int id)
{
var uniqueID = CalculateUniqueFromId(id);
// This compiles.
return RedirectToAction("B", new { uniqueID });
// This does not compile.
return RewriteToAction("B", new { uniqueID });
}
public ActionResult B(Guid uniqueID)
{
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
、アクションAは、整数からGUIDを計算し、別のアクションに渡します。
回避策:私はこのような何かに上記のコードを変更することができ
:
public ActionResult A(int id)
{
var uniqueID = CalculateUniqueFromId(id);
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
public ActionResult B(Guid uniqueID)
{
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
予想通りこれが働くだろう。
さらに複雑なシナリオでは、私はいつでも使用するために「サーバー側リダイレクト」(別名書き換え)をしたいと考えています。
代替回避策:
私はまた、例えば、HttpContext.RewritePath
を使用することができますGlobal.asaxのApplication_BeginRequest
の中に書き直しをしてください。
これは、期待通りに機能していても、「MVCコンテキスト外」と感じます。
私の質問:
RewriteToAction
のようなものをやってのエレガントな、MVC-統合方法はありますか?
アップデート1:
Luke commented有望リンク:
私は、これは私のニーズに合うかどうか、検討してみましょう。
これはあなたの要件を満たすとは思わない? http://stackoverflow.com/a/1180744/894792またはhttp://stackoverflow.com/a/1242525/894792 – Luke
それは非常に有望に見える、@ルーク、私は見てみましょう、ありがとうたくさん。 –
幸運な私の友人! :o) – Luke