DOBON.NET DOBON.NETプログラミング掲示板過去ログ

1 つのページには、1 つのサーバー側 Form タグのみを指定できます。

環境/言語:[ASPX  VB.NET2005 SQL- Server]
分類:[ASP.NET]

今回ご教示頂き内容になります。
・ASPX.Net & VB.Net2005になります。

エラー内容の解釈
 ・ASPXになって複数のFormタグを使用する事が出来ず、
 ビルドは正常終了するが、実行に件名のエラーが表示されている状況です。

コーディング
・XXXX.aspx内部に
 <form id="frmOrderView" runat="server">
  <asp:HiddenField ID="Id" runat="server" Value='<%#order_id.Text%>'/>
  <asp:Button ID="btnId" runat="server" PostBackUrl="~/次画面.aspx"/>
 </form>

 ※<Form>タグは上記の一か所しか使用していないにも
  関わらずエラーが発生します。

 エラー箇所は上記の<Form>タグの箇所でなく、
 下記の<%End If%>の箇所を指しています。
 メッセージ表示のタイトル部には■の文言が表示されてます。
 ■HttpExceptionはユーザによってハンドルされませんでした。

 <%If payMent.Value = "2" Then%>
  <asp:Button ID="btnX" PostBackUrl="遷移先1.aspx"/>
<%Else%>
  <asp:Button ID="btnX" PostBackUrl="遷移先2.aspx"/>
<%End If%>

実現させた事
・各ボタンクリック時に10弱の画面情報を<asp:HiddenField>タグのValueに設定し
 次画面に渡し、次画面では表示情報、Select条件に設定する。

・ページ全体に設定させたい場合
 <form>タグ開始、終了を記述する箇所は、
 <asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
 <form>タグ開始
 …
 …
 </form>タグ終了
</asp:Content> のような感じになると思いますが、
Content内に記述するとNGとなるタグたコードなど御座いますでしょうか。

以上になります。
ご教示並びにアドバイスをお願いいたします。
2010/10/27(Wed) 21:33:37 編集(投稿者)


■No27487に返信(はちまきさんの記事)

> 環境/言語:[ASPX  VB.NET2005 SQL- Server] 

フレームワークの名称としましては ASP.NET が、正しいです。
aspx は、ASP.NET で利用される WebForm の、拡張子ですね。

> メッセージ表示のタイトル部には■の文言が表示されてます。
> ■HttpExceptionはユーザによってハンドルされませんでした。

■というのは、掲示板におけるトピックのタイトルでしょうか。
「1 つのページには、1 つのサーバー側 Form タグのみを指定できます。」
というメッセージですか?

> ※<Form>タグは上記の一か所しか使用していないにも
> 関わらずエラーが発生します。

<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">

Content コントロールを使用されているところをみますと、マスターページを利用
していらっしゃいますか?
たとえば、マスターページに form タグが記述されている場合。
コンテンツページに form タグを記述しますと、form タグを2重に記述している
ことになります。

下記のコードをどちらに記述していらっしゃるのか、お教えいただけると、より明確
にわかるかと思います。

<%If payMent.Value = "2" Then%>
  <asp:Button ID="btnX" PostBackUrl="遷移先1.aspx"/>
<%Else%>
  <asp:Button ID="btnX" PostBackUrl="遷移先2.aspx"/>
<%End If%>
<form id="frmOrderView" runat="server">
  <asp:HiddenField ID="Id" runat="server" Value='<%#order_id.Text%>'/>
  <asp:Button ID="btnId" runat="server" PostBackUrl="~/次画面.aspx"/>
</form>

> Content 内に記述すると NG となるタグやコードなど御座いますでしょうか。

コンテンツページの Content コントロールは、マスターページの
ContentPlaceHolder コントロールと置き換えられる形で、マスターページと結合
され、出力されます。
たとえば、以下のようなコードにおきまして。
Content 内に head タグや body タグを記述しますと、構造的に正しくない
html が出力されます。

マスターページ
[Site1.Master]
<%@ Master Language="VB" AutoEventWireup="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
  <asp:ContentPlaceHolder ID="head" runat="server">
  </asp:ContentPlaceHolder>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
    </asp:ContentPlaceHolder>
  </div>
  </form>
</body>
</html>

コンテンツページ
[WebForm1.aspx]
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site1.Master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
</asp:Content>
もりおさん、
 
 ご教示、アドバイス有難うございます。
 毎度、勉強になっております。

> フレームワークの名称としましては ASP.NET が、正しいです。
> aspx は、ASP.NET で利用される WebForm の、拡張子ですね。

→大変勘違いをしておりました。有難うございます。
 
> ■というのは、掲示板におけるトピックのタイトルでしょうか。
> 「1 つのページには、1 つのサーバー側 Form タグのみを指定できます。」
> というメッセージですか?

→トピックのタイトルは
 「1 つのページには、1 つのサーバー側 Form タグのみを指定できます。」
 になります。

> <asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
> Content コントロールを使用されているところをみますと、
> マスターページを利用していらっしゃいますか?

→マスタページを使用しておりました。
 マスターページ側で<Form>タグの記述がありました。
 
> 下記のコードをどちらに記述していらっしゃるのか、
> お教えいただけると、より明確にわかるかと思います。

→マスターページではない、ページに記述しております。

もりおさんがご教示して頂きました

> マスターページ →→ コンテンツページ
> [Site1.Master] →→ [WebForm1.aspx]

【本件から多少脱線してしまうのですが、申し訳御座いません】
→上記の流れやコーディングをしておりました。
 除機の流れのコーディングを実施している場合、コンテンツページ内で
 <Form>タグを使う事は出来ず、
 大量の引継情報を別画面に渡す場合は、
 <asp:HiddenField>タグを使用し、ボタン押下後に<asp:HiddenField>タグの
 ID="idHidden00"にDataBindをさせて、Value='<%#引継画面情報%>'を設定し

 次画面で
  If Not Page.PreviousPage Is Nothing Then
 If Page.PreviousPage.IsCrossPagePostBack Then
   変数 = CType(Page.PreviousPage.FindControl _
        ("※ユニークID名"), HiddenField)
    End If
   End If

 ※引継情報のID="idHidden00"だと受渡しが出来ず、
  HTMLが生成されたユニークIDだと受取れました。
  ASPのオフィシャルWEBサイトなどで使用方法などをみると
  IDで受取れそうな記述があるのですが、
  使い方が間違っているのでしょうか。
■No27498に返信(はちまきさんの記事)

「本件から多少脱線してしまう」とのことですが、はじめのご質問は解決されたのでしょうか?もし解決されたのであれば、解決したことをご投稿いただき、解決済みにしてください。もしまだ解決していないのであれば、まずそちらを解決してください。その後で、また「脱線した」内容の新たなご質問をされたいのであれば、新しいトピックを作成してください。

また、はちまきさんのご投稿を拝読させていただきますと、誤字が多いのが気になります。また、使用禁止とされている半角カナも使われています。急いでいらっしゃったのかもしれませんが、急いでいい加減なご投稿をされるよりも、時間をかけて読みやすい内容のご投稿をしていただけますように、お願いいたします。(正直言いますと、 No27487 のご質問は、結局何をお聞きになりたいのか、私にはよくわかりません。)

もし「書き込みのルールについて」をまだお読みでなければ、お手数ですが、ご一読ください。

書き込みのルールについて
http://dobon.net/vb/bbs/index.html

面倒だとは思いますが、ご協力をお願いいたします。
管理人様

 誤字脱字などご指摘まことに申しわけ御座いません。
 以後、気をつけます。

  

> ■No27498に返信(はちまきさんの記事)
>
> 「本件から多少脱線してしまう」とのことですが、はじめのご質問は解決されたのでしょうか?もし解決されたのであれば、解決したことをご投稿いただき、解決済みにしてください。もしまだ解決していないのであれば、まずそちらを解決してください。その後で、また「脱線した」内容の新たなご質問をされたいのであれば、新しいトピックを作成してください。
>
> また、はちまきさんのご投稿を拝読させていただきますと、誤字が多いのが気になります。また、使用禁止とされている半角カナも使われています。急いでいらっしゃったのかもしれませんが、急いでいい加減なご投稿をされるよりも、時間をかけて読みやすい内容のご投稿をしていただけますように、お願いいたします。(正直言いますと、 No27487 のご質問は、結局何をお聞きになりたいのか、私にはよくわかりません。)
>
> もし「書き込みのルールについて」をまだお読みでなければ、お手数ですが、ご一読ください。
>
> 書き込みのルールについて
> http://dobon.net/vb/bbs/index.html
>
> 面倒だとは思いますが、ご協力をお願いいたします。
解決済み!
度々で本当に申し訳ないのですが、この掲示板では、解決していないのに解決済みにしてはいけない決まりになっています。もし解決されていましたら、そのことをご報告ください。

面倒をおかけして申し訳ありませんが、ご協力をお願いいたします。

DOBON.NET | プログラミング道 | プログラミング掲示板