1

高度にカスタマイズされた手作りのフォームを sitefinity 4.0 に取り込もうとしていますが、コード ビハインドでフォームのポストバック データに何をしてもアクセスできないという問題があります。私のフォームはユーザー コントロールであり、ここで説明する方法で追加しました: http://www.sitefinity.com/40/help/developer-manual/controls-adding-a-new-control.html

数時間格闘した後、基本的なテスト フォームを作成しましたが、まだポストバック データにアクセスできません。また、EnableViewState="true" をあちこちに追加しようとしましたが、ポストバック時にフォーム データがまだ空です。まったく同じユーザー コントロールが実行され、完全に sitefinity の外部でデータがポストされます。ポストバック データにアクセスする他の方法も試してみたところ、Request.Form に必要なデータが含まれていることがわかりました。ただし、通常の方法でフォーム要素にアクセスしたいので、ページ上のすべてのコントロールに対して Request.Form を実行してそのようにループする必要はありません。

基本フォームのコードは次のとおりです。

「BasicUserControl.ascx」

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="BasicUserControl.ascx.cs" Inherits="SitefinityWebApp.UserControls.Assessments.BasicUserControl" EnableViewState="true" %>
<div id="assessmentDiv" runat="server">
    <asp:TextBox ID="TextBox1" runat="server" clientidmode="Static" enableviewstate="true"></asp:TextBox>
    <asp:Literal ID="Literal1" runat="server" clientidmode="Static" enableviewstate="true"></asp:Literal>
    <asp:Button ID="Button1" runat="server" Text="Button" />
</div>

「BasicUserControl.ascx.cs」分離コード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SitefinityWebApp.UserControls.Assessments
{
    public partial class BasicUserControl : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                Literal1.Text = TextBox1.Text;
            }
        }
    }
}

繰り返しますが、上記のリンクで説明されている方法でコントロールを追加すると、Sitefinity 4.0 CMS ページを正常に作成し、コントロールをドラッグしてページを実行し、デバッガーを使用してコード ビハインドにステップインできますが、VS2010以下の行に到達すると、フォーム データが投稿されません。

Literal1.Text = TextBox1.Text;

参考までに: 上記の usercontrol.ascx コードにフォーム タグがない理由は、sitefinity を介してフォームを実行すると、.net ページにはサーバー側のフォーム タグが 1 つしか存在できないというエラーが発生するためです (sitefinity は独自のフォームを挿入します)。鬼ごっこ)。

よろしくお願いします。

ベン

4

3 に答える 3

1

気にしないでください-私はそれを理解しました。何らかの理由で、sitefinityフォーム送信の.netページライフサイクルのPage_Loadステージでは、データを利用できません(少なくともカスタムユーザーコントロールを介してではありません)。Page_PreRenderステージまで待って、ページ上のフォームからデータを取得すると、すべてが完了します。

私の現在の一般的な理論では、Sitefinity 4.0はフォームが送信されたときにポストバックデータを取得し、Page_Loadステージでそれを操作し終えていないため、Sitefinityがデータをページサイクルに戻す前にPage_PreRenderステージまで待つ必要があります。 。

于 2011-02-04T22:04:55.593 に答える
0

私はあなたがしたのと同じ問題を抱えていて、同じ解決策に行き着きました。それに多くの時間を費やしました-この答えがその頃にあったらいいのにと思います。

于 2011-02-08T21:00:30.723 に答える
0

マスターページに enableviewstate を追加してみてください。私は同じ状況にあり、これで解決しました。また、ページ作成時に「ビューステートを有効にする」にチェックを入れました。

この助けを願っています。

`<%@ Master Language="C#" AutoEventWireup="true" CodeFile="HomePageClubManavgat.master.cs" Inherits="App_Master_HomePageClubManavgat" EnableViewState="true" %>

<script type="text/C#" runat="server">
protected override void OnInit(EventArgs e)
{
    this.Page.EnableViewState = true;
    base.OnInit(e);
}

`

于 2012-01-31T09:21:56.373 に答える