C# 无法将带[]的索引应用于类型为';System.Web.UI.HtmlControl.HtmlForm Web用户控件未加载

C# 无法将带[]的索引应用于类型为';System.Web.UI.HtmlControl.HtmlForm Web用户控件未加载,c#,asp.net,.net,viewstate,C#,Asp.net,.net,Viewstate,我有一个web用户控件,正在发布到表单中,但第二个用户控件“PageStateTemplate”注册为未知元素,在web控件的实际代码中,出现了标题中的错误。这适用于包含“ViewState”的所有行 受保护的无效页面加载(对象发送方、事件参数e) { 如果(!IsPostBack) { string str=“欢迎访问Aspdotnet Suresh网站”; 如果(ViewState[“SampleText”]==null) { ViewState[“SampleText”]=str; }

我有一个web用户控件,正在发布到表单中,但第二个用户控件“PageStateTemplate”注册为未知元素,在web控件的实际代码中,出现了标题中的错误。这适用于包含“ViewState”的所有行


受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
string str=“欢迎访问Aspdotnet Suresh网站”;
如果(ViewState[“SampleText”]==null)
{
ViewState[“SampleText”]=str;
}
}
}
受保护的无效B单击(对象发送者,事件参数e)
{
lblString.Text=ViewState[“SampleText”].ToString();
}
视图状态数据:

在web表单中,应该只有一个带有属性
runat=“server”
的标签
表单
,以及此
表单中的所有控件
,因此在用户控件中,您不需要带有
runat=“server”
表单
,它通常放在页面或母版页中


因此,对于solve-从用户控件中删除
表单
声明

将表单id从ViewState更改为任何其他。。。然后尝试..我现在得到一个“页面只能有一个服务器端表单”。那么,如果不是表单,我将如何生成代码?我对asp.net了解不多,但如果我试图创建多步骤viewstate,只有一个表单没有多大意义。@Alex-将它放在另一个网页中。。。或者,如果您只想使用一个页面,请使用面板
<%@ Control Language="C#" AutoEventWireup="true"%>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.ComponentModel" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="TemplateEngine.Docx" %>
<%@ Import Namespace="DocumentFormat.OpenXml.Packaging" %>
<%@ Import Namespace="DocumentFormat.OpenXml.Wordprocessing" %>
<%@ Import Namespace ="FileUpload" %>


<script runat="server"> 


   protected void Page_Load(object sender, EventArgs e)
   {
        if(!IsPostBack)
         {
            string str = "Welcome to Aspdotnet-Suresh Site";
         if(ViewState["SampleText"]==null)
            {
             ViewState["SampleText"] = str;
            }

         }
   }

   protected void btnClick_Click(object sender, EventArgs e)
   {
    lblString.Text = ViewState["SampleText"].ToString();
   }



</script>

<form id="ViewState" runat="server">
<div>

ViewState Data: <b><asp:Label ID="lblString" runat="server"/></b>
<asp:Button ID="btnClick" runat="server" Text="Get ViewState Data"
onclick="btnClick_Click"/>

</div>
</form>