在asp.net mvc布局页面上使用用户控件(.ascx)时出错

本文关键字:控件 用户 ascx 出错 mvc net asp 布局 | 更新日期: 2023-09-27 18:23:46

我正在我的Mvc布局页面中集成Asp.net用户控件(.ascx),即主页,我正在使用剃刀引擎。

错误:执行处理程序的子请求时出错

'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerWrapper ascx.
                  Control '1_hdfData' of type 'HiddenField' must be placed inside a form tag with runat=server.

这是我的代码:

_Layout.cs.html:

@Html.Partial("~/UserControls/Data.ascx")

数据.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Data.ascx.cs" Inherits="MyNameSpace.Data" %>
                 <asp:HiddenField ID="hdfData" runat="server" />
                --Rest all other asp.net server side controls---.

数据.ascx.cs

namespace MyNameSpace.Data
                {
                     public partial class Data : ViewUserControl
                     {
                         //Page_Load events and other code
                     }
                }

这就像我从ViewUserControl继承了用户控件(.ascx),所以我不能使用asp.net控件吗?

有人能帮我吗?

在asp.net mvc布局页面上使用用户控件(.ascx)时出错

 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Data.ascx.cs" Inherits="MyNameSpace.Data" %>
<form runat="server">
             <asp:HiddenField ID="hdfData" runat="server" />
            --Rest all other asp.net server side controls---.
</form>

我分享了一个想法,但这不是一个好的实践。

@Html.Partial("_ASCX_FILE")
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%@ Register Assembly="SomeAssembly" Namespace="SomeNs" TagName="ASCX_FILE" %>
<ASCX_FILE:SomeControl runat="server" ID="fooControl" />

也许上述解决方案可以解决您的问题。

Suggesting again, try using pure MVC flavor. :)