2009-03-27 10 views
0

私はASP.NETを初めて使い、ascxユーザーコントロールにフォームタグを持っています。私はこのフォームが 'aspnetForm'というフォームの中にネストされていることを知ったので、javascriptからフォームを送信できません。私がちょうどcgiへの投稿をしたいのであれば、これをどのように達成できますか?ASP.NET POSTの問題

答えて

4

<form runat='server'>を削除する必要がない場合は、<form action="page.cgi" method="post">というフォームを使用してください。いくつかのサーバーコントロールを使用することはできません。代わりにそれらのHTML同等物を使用してください。

ページを制御できない場合は、javascriptを使用していくつかの非表示フィールドを含むページに新しいフォームを挿入し、ボタンをクリックすると値を設定できます。私は、formタグでにrunat = 'サーバー' 属性を持っていない

var myForm = document.createElement("form"); 
myForm.attributes["action"] = "mycgi.cgi"; 
myForm.attributes["method"] = "POST"; 
var myhiddenfield = document.createElement("input"); 
myhiddenfield.attributes["type"] = "hidden"; 
myhiddenfield.attributes["name"] = "name" 
document.body.appendChild(myForm); 
myForm.appendChild(myhiddenfield); 

function onFormButtonClick() { // set as onclick on a <button> 
    myhiddenfield.value = ... //value read from a textbox or something. 
    ... 
    myForm.submit(); 
} 
+0

:このような

何か。これは単に.ascxページ内にあり、webpartによって読み込まれるコントロールであるため、aspnetFormをその周りにラップするため、送信できません。 –

+0

ああ、実際のページをコントロールしていないからです。 javascriptを使用してページにフォームを挿入し、代わりに送信することができます。 –

+0

どうすればいいですか?フォームは常にaspnetFormフォームの中にネストされているようです。 –