Html.AntiForgeryToken()と共存できないのは、ちと辛いのでAntiForgeryWorkerのソースなど見ながら検討をはじめて見ると「なんだ、こんなことする必要なかったんだ(汗)」ってことに。

結局、Html.AntiForgeryToken()とValidateAntiForgeryToken属性の組み合わせも、Formの_RequestVerificationTokenパラメータの値を利用しているだけ。であれば、JavascriptでPostする際に、Html.AntiForgeryToken()で作成した_RequestVerificationTokenの値を送信してあげるだけで良いことに気がついた。

なので、View側はFormがあればその中に、Formがなければ適当なところに

@Html.AntiForgeryToken()

を普通に書いて、コントローラ側のアクションメソッドに

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Hoge(RequestArgs args)
        {

Javascript側では

        //送信パラメータ
        var data = {
            ID: $('#id').val(),
            Code: $('#code').val(),
        };
        data['__RequestVerificationToken'] = $('input[name="__RequestVerificationToken"]').val();

        $.post('/コントローラ名/アクション名', data,
        function () {
            //コールバック
        });

と、送信パラメータに

data['__RequestVerificationToken'] = $('input[name="__RequestVerificationToken"]').val();

と認証トークンを追加してあげれば良いだけだったのだ(ちゃんちゃん!)

Railsとおんなじじゃん(爆)

もしもフィルターをAjax専用にしたければ、こんな感じで新しいフィルタを作ればよいでしょう!

    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
    public class ValidateAjaxAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            var httpContext = filterContext.HttpContext;

            // 特別に拡張してやりたいことなど --->
            if (!(httpContext.Request.HttpMethod == WebRequestMethods.Http.Post || httpContext.Request.HttpMethod == WebRequestMethods.Http.Get))
            {
                throw new WebException("Post/Get以外のHttpMethodは利用できません。", WebExceptionStatus.ProtocolError);
            }

            if (!httpContext.Request.IsAjaxRequest())
            {
                throw new WebException("Ajax通信以外は受け付けません。", WebExceptionStatus.ProtocolError);
            }
            // <--- 特別に拡張してやりたいことなど

            //実際のValdateは、ValidateAntiForgeryTokenAttributeにお任せ
            ValidateAntiForgeryTokenAttribute validate = new ValidateAntiForgeryTokenAttribute();
            validate.OnAuthorization(filterContext);
        }
    }