2012-09-08 47 views
1

我想訪問一個自定義用戶控件的HTML片段中的公共bool。這裏是我的代碼隱藏的部分:訪問ascx.cs公共布爾在ascx html

public partial class ToDoList : System.Web.UI.UserControl 
{ 
    public bool ShowAddNewButton { get; set; } 
    public bool CreateMode { get;set;} 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

} 

這裏是我的html:

<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="ToDoList.ascx.cs" Inherits="ToDoList" %> 

<div id="leftNav"> 
    <asp:HiddenField ID="hfNAVItems" runat="server" /> 
    <asp:HiddenField ID="hfRequestID" runat="server" /> 
    <asp:HiddenField runat="server" ID="hdnAllowDragDrop" /> 
    <div class='nav-header'> 
     <div> 
      My To-Do List</div> 
    </div> 
    <ul id="mainNav" class="nav-item-list"> 
     <li class="nav-item" id="firstNavContainer"> 
      <div> 
       <span class="nav-item-todos"> 
        <asp:Label Text="" runat="server" ID="lblfirstSectionHeader" /></span> 
       <% if(ShowAddNewButton) 
        { %> 
       <asp:Button ID="Button1" runat="server" Text="Add New" CssClass="navaddnewrequest todo-button" 
        OnClick="btnNewToDo_Click" /> 
       <%} %> 
      </div> 
      <ul id="todosNav"> 
       <% if (CreateMode) 
        { %> 
       <li class="SelectedNavHeader">New Todo</li> 
       <% } %> 
       <asp:Repeater runat="server" ID="rptToDoNavItems"> 
        <ItemTemplate> 
        <li class="ToDoSelectedNavGroup" runat="server" id="liToDoNavGroupCont"> 
         <asp:Literal runat="server" ID="lblToDoNavGroupDisplay" /></li> 
        </ItemTemplate> 
       </asp:Repeater> 
      </ul> 
     </li> 
    </ul> 
    <ul id="lineItemNav"> 
     <li class="darkgradient header">My Lists</li> 
    </ul> 

</div> 

我收到以下錯誤:

「ShowAddNewButton」這個名字不會在目前情況下存在
名稱'CreateMode'在當前上下文中不存在

撓我的頭在這一個...似乎pret ty元素。很高興知道我錯過了一些完全明顯的東西。

預先感謝

回答

0

管理此的另一種方法是使用Visible屬性。你需要設置你的lirunat="server"

<asp:Button ID="Button1" runat="server" Text="Add New" CssClass="navaddnewrequest todo-button" 
    OnClick="btnNewToDo_Click" Visible='<%= ShowAddNewButton %>'/> 

.... 

<li ID="liNewTodo" runat="server" class="SelectedNavHeader" 
    Visible='<%= CreateMode %>'>New Todo</li> 
0

如果沒記錯,你真的不能混用代碼隱藏屬性和服務器端腳本。你必須選擇一個。但是我嘗試了很長一段時間,所以也許你可以。

在我看來,假設你可以這樣做,問題是服務器端腳本正在將你的屬性名稱解釋爲變量名稱。您可以嘗試在thisbase前加前綴,然後查看是否有幫助。