【问题标题】:Getting Error in using user control(.ascx) on asp.net mvc layout page在 asc.net mvc 布局页面上使用用户控件(.ascx)时出错
【发布时间】:2015-11-20 07:01:32
【问题描述】:

我在我的 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.cshtml:

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

Data.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---.

Data.ascx.cs

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

如果我从ViewUserControl 继承用户控件(.ascx),我是否无法使用 asp.net 控件?

谁能帮我解决这个问题?

【问题讨论】:

  • 只需要在usercontrol中添加form标签
  • 我喜欢这个话题,很有趣:)

标签: c# asp.net asp.net-mvc webforms user-controls


【解决方案1】:
 <%@ 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>

【讨论】:

  • 是的,这很有效,但我需要在我的布局页面上呈现 2 个用户控件,那么我应该在哪里放置这个表单标签?
  • 为所有表单标签赋予不同的id并使用它。
  • 我已将表单标签放在 2 个用户控件上,但它给出的错误是:一个页面只能有一个服务器端表单标签。
  • 将两个表单标签赋予不同的id。
【解决方案2】:

我正在分享一个想法,但这不是一个好的做法。

@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. :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    相关资源
    最近更新 更多