2009-05-29 11 views
5

データベースからコンテンツを読み込むページを持つWebアプリケーションがあります。私は動的コンテンツにフォームを入れることができるようにしたいが、.netはその内部フォームがそのアクションを実行することを許可しない。この方法や他の方法で動的コンテンツページにフォームを取得できるようにする方法はありますか?ASP.netページのフォームタグ

ありがとうございました。

--EDIT--

私は何かを明確にする必要があると思う。これは、データベースからコンテンツを読み込むaspxページです。限り、私が知っているように、私は、ラベルからDBとスティックからプルテキストは決してコンパイルされませんまたは.net wpで処理され、したがって、この問題を解決するためにコードを使用することはできません。

答えて

4

のみページ(ASP型)上の一つの形態が存在することができ;何とかそのフォームを使用する必要があります。明確にするために

、一形態のみが処理が可能。

+13

愚かな、愚かな、webforms – annakata

+0

あなたはページにいくつのフォームを加えることができますが、タグ 'runat =" server "' –

1

ウェブフォームではありません。 ButtonLinkButtonに接続されたイベントハンドラを使用して、1ページのフルページ形式で作業する必要があります。幸いなことに、それを行うのは非常に簡単です:

foo.aspx:

... 
<asp:TextBox id="txtFoo" runat="server" /> 
<asp:Button id="btnFoo" runat="server" onclick="btnFoo_Click /> 
... 

foo.aspx.cs:

... 
protected void btnFoo_Click(object sender, EventArgs e) 
{ 
    string s = txtFoo.Text; 
    // do something with s 
} 
... 
0

あなたは「サブフォーム」送信ボタン(これはウェブフォームが同じページ上に複数のサブタイプのブートンを扱う方法です)にしたいものにサーバーサイドクリックイベントハンドラを追加することでポストバックを処理する必要があります。あなたが戻って

0

私は前にこの問題全体を実行しました完全なポストをたくない場合やAJAXとの巧妙なsoemthingを行います。 1つの回避策は、自分のアクションをasp:Panelの内部で行うコードを配置することです。パネルでは、 "DefaultButton"の属性をパネル内のボタンに設定し、ボタンをクリック(または "Enter"を押す)するとそのボタンのクリックイベントが発生します。私は唯一の許容asp:フォームが含まれているマスターページを持っているときにEnterを押して "フォーム"を提出したいとき、これは非常に便利だとわかりました。

これが役に立ちます。あなたは(たとえば、PayPalのボタンのように、)サードパーティのサイトへの非ポストバック形をしたいとき

5

これは、共通の問題です。

問題は、HTMLはできませんので、あなたがフォーム内のフォームを持って発生し、ほとんどのASP.NETページはHTMLで<form runat="server" />「アップハイ」(またはマスターページに)持っています。

私のお気に入りのソリューションは、まだすべてのコンテンツを示しながら、「ハイアップ」formタグを非表示にすることです。その後、あなたは身体に必要なタグを自由にダンプすることができます。これを動的に行う場合は、どのページにカスタムフォームがあるかをページ単位で選択できます。

私はGhostForm.csはこれを処理するというクラスを作成しました。あなたがここにそれについてのすべてを読むことができます:

http://jerschneid.blogspot.com/2007/03/hide-form-tag-but-leave-content.html

1

ディーノエスポジトは、複数のフォームまたはちょうどすべてのあなたの質問に答えるかもしれないASP.Netで「シミュレート」サブフォームを処理対象とMSDNの雑誌からの記事があります。

http://msdn.microsoft.com/en-us/magazine/cc164151.aspx

0

任意の回避策は、ハックと非常に醜いだろう。設計上、asp.netはフォームタグを使用してデータを投稿して取得します。このため、Webフォームアプリケーションと呼ばれています。 Htmlはネストされたフォームを許可しません。あなたがしたいことは、あなたのコードの中でWebRequestを使うことです。

Paypalボタンのようなものを試している場合は、このようなものを簡単に使用できます。

マークアップ:背後に

<div id="PayPalButtonContainer" runat="server"></div> 

コード:

public static string GetPayPalButtonMarkup() 
    { 
     const string markup = @"https://www.paypal.com/cgi-bin/webscr 
            ?cmd=_xclick&business={0} 
            &item_name=Widget 
            &amount={1} 
            &currency_code=USD"; 
     return markup; 
    } 

    PayPalButtonContainer.InnerHtml = string.format(GetPayPalButtonMarkup,"YOUR PAYPAL USER NAME", "YOUR PRICE VALUE"); 
0

私が最初にこの問題に出くわしたとき、私は私のための最も簡単な解決策は単純なコピーにしたマスターページを貼り付け、それを与えます少し異なる名前など:

SiteNameMasterPage  'Default page with FORM tag 
SiteNameMasterPageNF 'No Form tag 

ED FORMタグまたはかどうかは、単にこの

<%@ Page Title="" Language="VB" MasterPageFile="~/SiteName.master" %> 
<%@ MasterType VirtualPath="~/SiteName.master" %> 
<!-- This masterpage has the default FORM tag --> 

または

<%@ Page Title="" Language="VB" MasterPageFile="~/SiteNameNF.master" %> 
<%@ MasterType VirtualPath="~/SiteNameNF.master" %> 
<!-- This masterpage does NOT have the default FORM tag --> 

と同じように、私のCONTENT-ページの上部にマスターページのリンクを変更後、コンテンツページ、私が好きな場所で私のフォームを置く<form>タグを含めることができます

関連する問題