ASP.NETで、何らかのWebコントロールを使用すると、そのaspxには__VIEWSTATEをいう画面情報を表すパラメータ(input hidden タグ)が生成されます。
このaspxから、別のaspxへ直でPOSTをしたいことがあるのですが、そのままformのaction属性を目標の別aspxへ書き換えるだけでは、ViewStateエラーが発生してしまいます。
このエラーがMAC検証エラーの場合、machine.configのenableViewStateMacをfalseにすることで検証を無効化することもできるのですが、これはセキュリティホールのリスクがあります。
http://support.microsoft.com/kb/829743/ja
結論から言うと、machine.configにてMAC検証を有効化したままで、ViewStateを含むaspxから別aspxへ直接POSTするには、POST前に__VIEWSTATE要素を削除してしまえばいいです。
以下のようなJavascriptで簡単に実現できます。
function post(targetAspx)
{
var viewState = window.document.getElementById('__VIEWSTATE');
if(viewState != null) {
viewState.parentNode.removeChild(viewState);
}
var f = window.document.forms[0];
f.action = targetAspx;
f.submit();
}