2012-01-25 49 views
3

我有這樣的代碼在我的ASP頁面:認沽C#變量作爲ASP .NET自定義控制參數

<%@ Register TagPrefix="genies" Namespace="TheNamespace" Assembly="TheAssembly"%> 

... 

<% string name = GetTag().Name; %> 
<div class="<%= name %>"></div> 
<genies:BarGenie ID="BarGenie1" runat="server" Title="<%= name %>" /> 

的BarGenie類具有下面的代碼:

public class BarGenie : Control { 

    public string Title { get; set; } 

    protected override void Render(HtmlTextWriter writer) { 
     writer.Write("<div>" + Title + "</div>"); 
    } 

} 

這是HTML是產生:

<div class="E00383"></div> 
<div><%= name %></div> 

我想看到這個HTML:

<div class="E00383"></div> 
<div>E00383</div> 

我已經試過各種事情在ASPX代碼:@name,<%#名稱%>等,但我無法弄清楚是怎麼回事。是否有其他方式插入我應該使用的自定義控件?我有錯誤的方法來使用這個自定義控件嗎?

回答

1

試試用<%# %>代替<%= %>標籤,並在代碼隱藏中添加對this.DataBind();的調用。

+0

OK,添加this.DataBind()作爲Render方法的第一行。我得到一個編譯器錯誤:名稱'name'在當前上下文中不存在。它看起來像是在抱怨'Title =「<%# name %>」'參數... – wpearse

3

嘗試使用GetTag()。名稱而不是名稱。

還檢查了http://www.scottfindlater.co.uk/blog/asp-net-inline-code-and它可以幫助

正如

<div class="<%= GetTag().Name%>"></div> 
<genies:BarGenie ID="BarGenie1" runat="server" Title="<%= GetTag().Name%>" /> 
+0

他在調用變量,因爲他想在至少兩個地方重複使用該值。 –

+0

我做了@JoshEarl建議的更改,然後用'GetTag()。Name'替換'name',現在它工作正常。 – wpearse

+0

但我不明白爲什麼GetTag()。名稱起作用,但名稱不起作用?所以。奇怪的。 – wpearse

1

怎麼樣在設置這個值的代碼隱藏:

this.BarGenie1.Title = GetTag().Name;