2016-10-05 13 views
0

ユーザーコントロールをasp.net Webページに動的に追加しようとしています。 ユーザーコントロールコード:ASP.netユーザーコントロールが認識されない

<%@ Control ClassName="CustomParameterView" %> 

<script runat="server"> 
    public string Value { get; set; } 
    public string Description { get; set; } 
    public string Name { get; set; } 

    private void Input_OnTextChanged(object sender, EventArgs e) 
    { 
     Value = Input.Text; 
    } 

</script> 
<div class="form-horizontal"> 
    <div class="form-group"> 
     <label class="col-sm-2 control-label" id="DisplayName"></label> 
     <div class="col-sm-3"> 
      <asp:TextBox ID="Input" runat="server" CssClass="form-control" OnTextChanged="Input_OnTextChanged" /> 
     </div> 
    </div> 
</div> 

私は.aspxのファイル内のレジスタの行を追加しました:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="PerCHW.Valkyrie.Server.WebApplication._Default" %> 

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <%@ Reference Control="CustomParameterView.ascx" %> 
... 

問題はこのことです:

var control = (CustomParameterView) LoadControl("CustomParameterView.ascx"); 

がコンパイルされません。

私はまた、人々は私が間違って

何をやっている... tiはUC名の前にASP.を追加しますが、それは同様に動作しないしようとして見ましたか?

+0

VDWWDポストは、プレースホルダについてのポイントを作成します。また、Page_Initにそのユーザコントロールを追加する必要があります(毎回ポストバック時に)。ここには、ユーザーコントロールを動的に追加するサンプルサイト全体を持つブログ記事へのリンクがあります。 http://blog.regencysoftware.com/post/2012/11/14/Dynamically-Adding-User-Controls-to-an-ASPX-page –

答えて

1

コントロールをPlaceHolderに追加していないようです。 .aspxページで

プレースホルダを追加します。その後、

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 

そして、背後にあるコードのプレースホルダにコントロールを追加します。

var control = (CustomParameterView)LoadControl("~/CustomParameterView.ascx"); 
PlaceHolder1.Controls.Add(control); 

このコードは、ページがあるたびに呼び出されていることを確認します読み込まれたので、それを!IsPostBackのチェックの中に入れないでください。そうしないと、コントロールはポストバックの後になくなります。

関連する問題