簡體   English   中英

ASP.NET TextBox - 是否可以使用行代碼<%%>初始化文本屬性

[英]ASP.NET TextBox - is it possible to initialize text attribute with in line code <% %>


我需要用一些其他地方的屬性來初始化文本框元素的text屬性,而實際上我可以從代碼中執行此操作,但如果可以這樣做會更方便:

<asp:TextBox runat="server" Text="<%= new ContextItem("title").Value %>" />

不幸的是上面不能做..
問題是這個文本框元素在頁面中重復多次,我的問題是:

是否有任何建議如何使其更清潔,然后在代碼背后一次又一次地寫它?
謝謝,阿德勒

好的,所以這里的基本問題是,如果你使用內聯表達式,你不能使用它來設置綁定上下文之外的服務器端控件的屬性(使用綁定表達式)。 我推斷這可能是因為評估這些內聯表達式的時間。 但是,您可以通過這種方式呈現客戶端標記。 如果您希望將功能完全保留在aspx文件中,則可以使用此方法。

編輯:根據Justin Keyes的輸入,似乎可以使用綁定表達式來設置屬性。 您需要手動調用Page.DataBind()來觸發文本框來評估表達式(請參閱下面的答案)。

例如:

<asp:Label ID="lbl" runat="server" Text="<%= Now.ToShortDateString() %>"  />

會產生這樣的輸出:

<%= Now.ToShortDateString()%>

另一方面這個:

<%= "<span>" & Now.ToShortDateString() & "</span>"%>

會產生這樣的輸出:

2011年7月27日

解決此問題的“常規”方法是根據您的需要在Page.Load事件處理程序或其他適當的事件處理程序中設置Label.Text屬性,如下所示。 這是我認為大多數人更願意這樣做的方式,在我看來最容易理解。

標記:

<asp:Label ID="lbl" runat="server" />

碼:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    lbl.Text = Now.ToShortDateString()
End Sub

選項1:不使用服務器控件

如果您沒有訪問服務器上的值,只需使用純HTML而不是ASP.NET服務器控件:

<input ID="Textbox1" Type="Text"  
    Value='<%= new ContextItem("title").Value %>' />

選項2:使用Page.DataBind()

如果你改變你的代碼,使用<%#代替<%= (如下),並調用Page.DataBind()工作(我測試過它)。 將您的標記更改為:

<asp:TextBox runat="server" Text="<%# new ContextItem("title").Value %>" />

在你的邏輯中,在Load事件中調用Page.DataBind() ,如下所示:

protected void Page_Load(object sender, EventArgs e) {
    Page.DataBind(); 
}

即使TextBox不包含在典型的“數據綁定”控件 (如Repeater或GridView DataBind() ,在控件上調用DataBind()也會強制它評估<%# ... %>語句。

Moof的評論(如下)是正確的。 這篇文章還提到了Page.DataBind()。

您可以以類似的方式在頁面上設置文本。

<asp:TextBox id="TextBox1" runat="server" Text='<%#GetValue('Title)%>' />

但為了使其工作,您需要DataBind對Page_Load的控件。 對於多個TextBox控件,您可以遍歷每個控件並對其進行數據綁定,這樣您就不必對每個控件進行硬編碼。

我不確定你的ContextItem是什么,所以你必須修改我的代碼。

簡短的回答是NO,你只能在數據綁定中使用這種代碼,這意味着在GridView中。 但你可以在頭部使用它。

我用它來為我的網址添加前綴有些預定義的東西。

  <script src="<%=Utils.GetGeneralPrefix()%>/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

在那種情況下它有效。

希望能幫助到你。

當我嘗試這個時,90%的時間我必須在<%%>周圍使用單引號('')而不是雙引號(“”)。 在花費太多時間在其他任何事情之前嘗試一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM